• DOMAIN: Botanical Research
• CONTEXT: University X is currently undergoing some research involving understanding the characteristics of plant and plant seedlings at various stages of growth. They already have have invested on curating sample images. They require an automation which can create a classifier capable of determining a plant's species from a photo.
• DATA DESCRIPTION: The dataset comprises of images from 12 plant species. Source: https://www.kaggle.com/c/plant-seedlings-classification/data.
• PROJECT OBJECTIVE: To create a classifier capable of determining a plant's species from a photo.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn import model_selection
from sklearn.compose import ColumnTransformer
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.impute import SimpleImputer
import warnings
from sklearn.metrics import confusion_matrix
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import RandomizedSearchCV
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dense, Input, Dropout,BatchNormalization
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
import random
from tensorflow.keras import backend
random.seed(1)
np.random.seed(1)
tf.random.set_seed(1)
warnings.filterwarnings("ignore")
images_folder = "plant-seedlings-classification.zip"
from zipfile import ZipFile
with ZipFile(images_folder,'r') as zip:
zip.extractall()
import glob
# specify the train folder
train_folder = "plant-seedlings-classification/train"
# get a list of all the image files in the train folder
image_files = glob.glob(train_folder + "/*/*.png")
len(image_files)
4750
import os
import cv2
dataset = 'plant-seedlings-classification/train'
X_data = []
y = []
labels = []
# list all folders inside train directory
for i in os.listdir(dataset):
if i!= '.DS_Store': #Specific to Mac
print(i)
labels.append(i)
for j in os.listdir(os.path.join(dataset, i)):
# read each image inside train directory one by one
dummy = cv2.imread(os.path.join(dataset, i, j))
X_data.append(dummy)
y.append(i)
Black-grass Charlock Cleavers Common Chickweed Common wheat Fat Hen Loose Silky-bent Maize Scentless Mayweed Shepherds Purse Small-flowered Cranesbill Sugar beet
# Check number of images in each folder/category
for category in labels:
print('{} {} images'.format(category, len(os.listdir(os.path.join(train_folder, category)))))
Black-grass 263 images Charlock 390 images Cleavers 287 images Common Chickweed 611 images Common wheat 221 images Fat Hen 475 images Loose Silky-bent 654 images Maize 221 images Scentless Mayweed 516 images Shepherds Purse 231 images Small-flowered Cranesbill 496 images Sugar beet 385 images
print(len(X_data), len(y), len(labels))
4750 4750 12
There are totally 4750 plant species in the given dataset with 12 classes
# create a DataFrame with the image file names, labels, and images
df = pd.DataFrame({"Name of Image": image_files, "Species": y, "Actual Image": X_data})
df['Name of Image'][0]
'plant-seedlings-classification/train\\Black-grass\\0050f38b3.png'
df['Name of Image'] = df['Name of Image'].str.split('\\', n=0).str.get(-1)
df.head()
| Name of Image | Species | Actual Image | |
|---|---|---|---|
| 0 | 0050f38b3.png | Black-grass | [[[27, 50, 80], [18, 42, 71], [36, 57, 83], [4... |
| 1 | 0183fdf68.png | Black-grass | [[[37, 43, 55], [37, 43, 54], [40, 46, 57], [4... |
| 2 | 0260cffa8.png | Black-grass | [[[24, 32, 45], [21, 30, 44], [22, 30, 45], [2... |
| 3 | 05eedce4d.png | Black-grass | [[[51, 84, 108], [56, 89, 112], [54, 88, 110],... |
| 4 | 075d004bc.png | Black-grass | [[[165, 162, 162], [165, 161, 163], [160, 157,... |
df["Name of Image"][0]
'0050f38b3.png'
df["Species"][0]
'Black-grass'
plt.imshow(df["Actual Image"][0])
<matplotlib.image.AxesImage at 0x194100c4250>
# visualizing the random images in the dataset along with their labels
# VISUALIZATION
def random_images(n):
import matplotlib.pyplot as plt # MATPLOTLIB FOR PLOTTING
import numpy as np
rand = np.random.randint(0, len(X_data), n) # Generating 10 random numbers out of total number of plant species
print(rand)
plt.figure(figsize=(20, 20))
for i,j in enumerate(rand):
plt.subplot(1, len(rand), i+1)
plt.imshow(X_data[j]) # greens, reds, blues, rgb
plt.title("{}".format(y[j]))
plt.axis('off')
plt.show()
#Let's fetch 5 random images along with its labels
random_images(5)
[ 235 3980 905 2763 2895]
# Plotting a random image in different ways (gray, blur and sharp)
import random
# Original Image
img_org = random.choice(X_data)
# Gray Image
gray_image = cv2.cvtColor(img_org, cv2.COLOR_RGB2GRAY)
# Blur Image
blur_img = cv2.GaussianBlur(img_org,ksize=(5,5),sigmaX=0,sigmaY=0)
# Sharp Image
sharp_filter = np.array([[0,-1,0],
[-1,5,-1],
[0,-1,0]])
sharp_img = cv2.filter2D(img_org,kernel=sharp_filter,ddepth=-1)
img_title = ['original_image', 'gray_image', 'blurred_image', 'sharp_image']
plt.figure(figsize=(20,20))
for i,img in enumerate([img_org, gray_image, blur_img, sharp_img]):
plt.subplot(1,4,i+1)
plt.title(img_title[i])
plt.imshow(img,cmap='gray')
X = df["Actual Image"]
y = df["Species"]
print(X.shape, y.shape)
(4750,) (4750,)
plt.imshow(X[0])
<matplotlib.image.AxesImage at 0x19416233880>
# Import Libraries
from sklearn.preprocessing import LabelEncoder
# Create class instance
le = LabelEncoder()
le.fit(y)
encoded_labels = le.transform(y)
# Create class instance
y_NN = pd.get_dummies(encoded_labels) #Data type: Number to Binary
# Display encoded variable
y_NN
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 4745 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 4746 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 4747 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 4748 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 4749 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
4750 rows × 12 columns
y_NN.shape
(4750, 12)
print("First 5 lables as one-hot encoded vectors:\n", y_NN[:5])
First 5 lables as one-hot encoded vectors:
0 1 2 3 4 5 6 7 8 9 10 11
0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0 0 0 0 0 0
4 1 0 0 0 0 0 0 0 0 0 0 0
# Display shape of images present in the dataset
for i in range(1,len(X)):
print(print(X[i].shape))
(388, 388, 3) None (886, 886, 3) None (117, 117, 3) None (471, 471, 3) None (1074, 1074, 3) None (251, 251, 3) None (1899, 1900, 3) None (531, 531, 3) None (352, 352, 3) None (1782, 1836, 3) None (531, 531, 3) None (1328, 1328, 3) None (354, 354, 3) None (586, 586, 3) None (1417, 1417, 3) None (351, 351, 3) None (961, 961, 3) None (753, 753, 3) None (630, 630, 3) None (711, 711, 3) None (1571, 1571, 3) None (2474, 2474, 3) None (650, 650, 3) None (511, 511, 3) None (247, 247, 3) None (143, 143, 3) None (110, 110, 3) None (1718, 1949, 3) None (368, 368, 3) None (588, 588, 3) None (945, 945, 3) None (521, 521, 3) None (700, 700, 3) None (468, 468, 3) None (641, 641, 3) None (685, 685, 3) None (1074, 1074, 3) None (93, 93, 3) None (1440, 1440, 3) None (288, 288, 3) None (603, 603, 3) None (800, 800, 3) None (170, 170, 3) None (135, 135, 3) None (93, 93, 3) None (603, 603, 3) None (733, 733, 3) None (400, 400, 3) None (170, 170, 3) None (1149, 1150, 3) None (940, 940, 3) None (1044, 1044, 3) None (470, 470, 3) None (372, 372, 3) None (524, 524, 3) None (638, 638, 3) None (1045, 1045, 3) None (195, 195, 3) None (641, 641, 3) None (680, 680, 3) None (595, 595, 3) None (178, 178, 3) None (1045, 1045, 3) None (107, 107, 3) None (193, 193, 3) None (73, 73, 3) None (156, 156, 3) None (993, 993, 3) None (780, 780, 3) None (372, 372, 3) None (900, 900, 3) None (470, 470, 3) None (171, 171, 3) None (430, 430, 3) None (603, 603, 3) None (137, 137, 3) None (94, 94, 3) None (884, 884, 3) None (478, 478, 3) None (685, 685, 3) None (1141, 1141, 3) None (690, 690, 3) None (906, 906, 3) None (1435, 1435, 3) None (1030, 1030, 3) None (351, 351, 3) None (780, 780, 3) None (371, 371, 3) None (874, 874, 3) None (720, 720, 3) None (163, 163, 3) None (352, 352, 3) None (2670, 2670, 3) None (151, 151, 3) None (2511, 2512, 3) None (352, 352, 3) None (502, 502, 3) None (2132, 2840, 3) None (388, 388, 3) None (120, 120, 3) None (352, 352, 3) None (121, 121, 3) None (565, 565, 3) None (766, 766, 3) None (88, 88, 3) None (614, 615, 3) None (388, 388, 3) None (297, 297, 3) None (1440, 1440, 3) None (352, 352, 3) None (603, 603, 3) None (700, 700, 3) None (113, 113, 3) None (665, 665, 3) None (720, 720, 3) None (108, 108, 3) None (1040, 1040, 3) None (531, 531, 3) None (368, 352, 3) None (478, 478, 3) None (315, 315, 3) None (1328, 1328, 3) None (945, 945, 3) None (800, 800, 3) None (1620, 1620, 3) None (2192, 2835, 3) None (780, 780, 3) None (109, 109, 3) None (685, 685, 3) None (619, 619, 3) None (983, 983, 3) None (447, 447, 3) None (402, 402, 3) None (471, 471, 3) None (380, 380, 3) None (274, 274, 3) None (481, 481, 3) None (120, 120, 3) None (158, 158, 3) None (531, 531, 3) None (138, 138, 3) None (163, 163, 3) None (906, 906, 3) None (524, 524, 3) None (900, 900, 3) None (292, 292, 3) None (751, 751, 3) None (505, 505, 3) None (372, 372, 3) None (181, 181, 3) None (478, 478, 3) None (189, 189, 3) None (736, 736, 3) None (1088, 1088, 3) None (167, 167, 3) None (685, 685, 3) None (129, 129, 3) None (981, 981, 3) None (625, 625, 3) None (470, 470, 3) None (491, 491, 3) None (1620, 1620, 3) None (1671, 1671, 3) None (89, 89, 3) None (430, 430, 3) None (545, 545, 3) None (936, 1040, 3) None (861, 861, 3) None (363, 363, 3) None (1328, 1328, 3) None (975, 975, 3) None (790, 790, 3) None (1136, 1137, 3) None (178, 178, 3) None (180, 180, 3) None (1005, 1006, 3) None (2266, 2267, 3) None (936, 1040, 3) None (1009, 1009, 3) None (88, 88, 3) None (642, 642, 3) None (400, 400, 3) None (1209, 1209, 3) None (1130, 1130, 3) None (983, 983, 3) None (115, 115, 3) None (638, 638, 3) None (197, 197, 3) None (421, 421, 3) None (97, 97, 3) None (1122, 1122, 3) None (700, 700, 3) None (2086, 2087, 3) None (740, 740, 3) None (1311, 1311, 3) None (1328, 1328, 3) None (1374, 1448, 3) None (1741, 1742, 3) None (558, 558, 3) None (147, 147, 3) None (182, 182, 3) None (1074, 1074, 3) None (175, 175, 3) None (641, 641, 3) None (96, 96, 3) None (711, 711, 3) None (1135, 1135, 3) None (128, 128, 3) None (470, 470, 3) None (94, 94, 3) None (1109, 1109, 3) None (170, 170, 3) None (447, 447, 3) None (82, 82, 3) None (78, 78, 3) None (1311, 1311, 3) None (1105, 1120, 3) None (534, 534, 3) None (530, 530, 3) None (906, 906, 3) None (100, 100, 3) None (603, 603, 3) None (440, 440, 3) None (91, 91, 3) None (435, 435, 3) None (115, 115, 3) None (74, 74, 3) None (723, 723, 3) None (677, 677, 3) None (188, 188, 3) None (74, 74, 3) None (1320, 1321, 3) None (1311, 1311, 3) None (601, 601, 3) None (145, 145, 3) None (400, 400, 3) None (723, 723, 3) None (740, 740, 3) None (749, 749, 3) None (836, 836, 3) None (900, 900, 3) None (700, 700, 3) None (92, 92, 3) None (879, 879, 3) None (1138, 1138, 3) None (351, 351, 3) None (220, 220, 3) None (1184, 1184, 3) None (879, 879, 3) None (372, 372, 3) None (154, 154, 3) None (749, 749, 3) None (665, 665, 3) None (1671, 1671, 3) None (1005, 1006, 3) None (772, 772, 3) None (575, 575, 3) None (1816, 1816, 3) None (91, 91, 3) None (83, 83, 3) None (577, 577, 3) None (471, 471, 3) None (466, 466, 3) None (160, 160, 3) None (1022, 1022, 3) None (578, 578, 3) None (818, 818, 3) None (214, 214, 3) None (166, 166, 3) None (192, 192, 3) None (484, 484, 3) None (325, 325, 3) None (856, 856, 3) None (306, 306, 3) None (356, 356, 3) None (1135, 1135, 3) None (779, 779, 3) None (366, 366, 3) None (370, 370, 3) None (523, 523, 3) None (1046, 1046, 3) None (1285, 1285, 3) None (188, 188, 3) None (326, 326, 3) None (992, 992, 3) None (178, 178, 3) None (475, 475, 3) None (351, 351, 3) None (955, 955, 3) None (393, 393, 3) None (312, 312, 3) None (218, 218, 3) None (654, 654, 3) None (428, 428, 3) None (171, 171, 3) None (210, 210, 3) None (737, 737, 3) None (479, 479, 3) None (425, 425, 3) None (203, 203, 3) None (492, 492, 3) None (520, 520, 3) None (464, 464, 3) None (136, 136, 3) None (402, 402, 3) None (358, 358, 3) None (371, 371, 3) None (185, 185, 3) None (179, 179, 3) None (358, 358, 3) None (287, 287, 3) None (1136, 1136, 3) None (166, 166, 3) None (231, 231, 3) None (170, 170, 3) None (371, 371, 3) None (495, 495, 3) None (163, 163, 3) None (322, 322, 3) None (289, 289, 3) None (841, 841, 3) None (437, 437, 3) None (380, 380, 3) None (161, 161, 3) None (987, 987, 3) None (282, 282, 3) None (193, 193, 3) None (174, 174, 3) None (154, 154, 3) None (837, 837, 3) None (586, 586, 3) None (158, 158, 3) None (503, 503, 3) None (435, 435, 3) None (732, 732, 3) None (581, 581, 3) None (464, 464, 3) None (121, 121, 3) None (1029, 1029, 3) None (862, 862, 3) None (154, 154, 3) None (171, 171, 3) None (1390, 1390, 3) None (524, 524, 3) None (797, 797, 3) None (174, 174, 3) None (150, 150, 3) None (432, 432, 3) None (232, 232, 3) None (360, 360, 3) None (180, 180, 3) None (181, 181, 3) None (496, 496, 3) None (178, 178, 3) None (311, 311, 3) None (528, 528, 3) None (959, 959, 3) None (440, 440, 3) None (156, 156, 3) None (163, 163, 3) None (386, 386, 3) None (168, 168, 3) None (371, 371, 3) None (917, 917, 3) None (316, 316, 3) None (351, 351, 3) None (148, 148, 3) None (1216, 1216, 3) None (250, 250, 3) None (176, 176, 3) None (466, 466, 3) None (408, 408, 3) None (156, 156, 3) None (475, 475, 3) None (131, 131, 3) None (163, 163, 3) None (204, 204, 3) None (1037, 1037, 3) None (857, 857, 3) None (194, 194, 3) None (379, 379, 3) None (420, 420, 3) None (351, 351, 3) None (629, 629, 3) None (134, 134, 3) None (389, 389, 3) None (326, 326, 3) None (172, 172, 3) None (170, 170, 3) None (196, 196, 3) None (135, 135, 3) None (537, 537, 3) None (155, 155, 3) None (184, 184, 3) None (191, 191, 3) None (244, 244, 3) None (388, 388, 3) None (240, 240, 3) None (358, 358, 3) None (530, 530, 3) None (373, 373, 3) None (182, 182, 3) None (150, 150, 3) None (165, 165, 3) None (289, 289, 3) None (406, 406, 3) None (486, 486, 3) None (238, 238, 3) None (165, 165, 3) None (226, 226, 3) None (492, 492, 3) None (664, 664, 3) None (368, 368, 3) None (181, 181, 3) None (244, 244, 3) None (469, 469, 3) None (1520, 1521, 3) None (504, 504, 3) None (469, 469, 3) None (456, 456, 3) None (403, 403, 3) None (170, 170, 3) None (396, 396, 3) None (168, 168, 3) None (135, 135, 3) None (157, 157, 3) None (190, 190, 3) None (514, 514, 3) None (360, 360, 3) None (824, 824, 3) None (831, 831, 3) None (400, 400, 3) None (1225, 1225, 3) None (214, 214, 3) None (195, 195, 3) None (227, 227, 3) None (178, 178, 3) None (317, 317, 3) None (174, 174, 3) None (168, 168, 3) None (422, 422, 3) None (370, 370, 3) None (1075, 1076, 3) None (373, 373, 3) None (129, 129, 3) None (1129, 1129, 3) None (385, 385, 3) None (125, 125, 3) None (552, 552, 3) None (275, 275, 3) None (880, 880, 3) None (509, 509, 3) None (381, 381, 3) None (886, 886, 3) None (967, 967, 3) None (400, 400, 3) None (162, 162, 3) None (347, 347, 3) None (1252, 1252, 3) None (142, 142, 3) None (1168, 1168, 3) None (381, 381, 3) None (160, 160, 3) None (383, 383, 3) None (377, 377, 3) None (376, 376, 3) None (405, 405, 3) None (608, 608, 3) None (434, 434, 3) None (322, 322, 3) None (164, 164, 3) None (1126, 1126, 3) None (402, 402, 3) None (492, 492, 3) None (354, 354, 3) None (383, 383, 3) None (152, 152, 3) None (375, 375, 3) None (447, 447, 3) None (350, 350, 3) None (371, 371, 3) None (451, 451, 3) None (516, 516, 3) None (382, 382, 3) None (354, 354, 3) None (353, 353, 3) None (656, 656, 3) None (345, 345, 3) None (1035, 1035, 3) None (182, 182, 3) None (531, 531, 3) None (358, 358, 3) None (1582, 1582, 3) None (143, 143, 3) None (164, 164, 3) None (300, 300, 3) None (163, 163, 3) None (378, 378, 3) None (235, 235, 3) None (418, 418, 3) None (721, 721, 3) None (321, 321, 3) None (138, 138, 3) None (480, 480, 3) None (191, 191, 3) None (498, 498, 3) None (152, 152, 3) None (1037, 1037, 3) None (352, 352, 3) None (946, 946, 3) None (1249, 1249, 3) None (124, 124, 3) None (124, 124, 3) None (416, 416, 3) None (441, 441, 3) None (129, 129, 3) None (305, 305, 3) None (533, 533, 3) None (234, 234, 3) None (196, 196, 3) None (147, 147, 3) None (544, 544, 3) None (386, 386, 3) None (513, 513, 3) None (379, 379, 3) None (407, 407, 3) None (160, 160, 3) None (198, 198, 3) None (155, 155, 3) None (188, 188, 3) None (169, 169, 3) None (168, 168, 3) None (932, 932, 3) None (170, 170, 3) None (186, 186, 3) None (602, 602, 3) None (154, 154, 3) None (341, 341, 3) None (456, 456, 3) None (730, 730, 3) None (806, 806, 3) None (591, 591, 3) None (245, 245, 3) None (473, 473, 3) None (339, 339, 3) None (896, 896, 3) None (428, 428, 3) None (391, 391, 3) None (165, 165, 3) None (185, 185, 3) None (485, 485, 3) None (238, 238, 3) None (430, 430, 3) None (461, 461, 3) None (179, 179, 3) None (458, 458, 3) None (481, 481, 3) None (153, 153, 3) None (210, 210, 3) None (377, 377, 3) None (423, 423, 3) None (976, 976, 3) None (181, 181, 3) None (159, 159, 3) None (700, 700, 3) None (935, 935, 3) None (198, 198, 3) None (476, 476, 3) None (638, 638, 3) None (246, 246, 3) None (163, 163, 3) None (160, 160, 3) None (721, 721, 3) None (422, 422, 3) None (424, 424, 3) None (1146, 1146, 3) None (184, 184, 3) None (245, 245, 3) None (163, 163, 3) None (586, 586, 3) None (878, 878, 3) None (129, 129, 3) None (121, 121, 3) None (676, 676, 3) None (750, 750, 3) None (446, 446, 3) None (397, 397, 3) None (133, 133, 3) None (183, 183, 3) None (396, 396, 3) None (409, 409, 3) None (399, 399, 3) None (131, 131, 3) None (217, 217, 3) None (430, 430, 3) None (430, 430, 3) None (401, 401, 3) None (170, 170, 3) None (155, 155, 3) None (397, 397, 3) None (910, 910, 3) None (286, 286, 3) None (733, 733, 3) None (1148, 1148, 3) None (147, 147, 3) None (401, 401, 3) None (456, 456, 3) None (426, 426, 3) None (160, 160, 3) None (154, 154, 3) None (188, 188, 3) None (296, 296, 3) None (905, 905, 3) None (483, 483, 3) None (433, 433, 3) None (140, 140, 3) None (634, 634, 3) None (768, 768, 3) None (221, 221, 3) None (364, 364, 3) None (828, 828, 3) None (347, 347, 3) None (515, 515, 3) None (324, 324, 3) None (297, 297, 3) None (1038, 1038, 3) None (519, 519, 3) None (395, 395, 3) None (438, 438, 3) None (281, 281, 3) None (335, 335, 3) None (626, 626, 3) None (161, 161, 3) None (188, 188, 3) None (532, 532, 3) None (546, 546, 3) None (1167, 1167, 3) None (988, 988, 3) None (502, 502, 3) None (195, 195, 3) None (874, 874, 3) None (332, 332, 3) None (156, 156, 3) None (471, 471, 3) None (659, 659, 3) None (335, 335, 3) None (129, 129, 3) None (362, 362, 3) None (737, 737, 3) None (990, 990, 3) None (772, 772, 3) None (744, 744, 3) None (144, 144, 3) None (147, 147, 3) None (570, 570, 3) None (298, 298, 3) None (242, 242, 3) None (352, 352, 3) None (126, 126, 3) None (140, 140, 3) None (224, 224, 3) None (315, 315, 3) None (156, 156, 3) None (66, 66, 3) None (346, 346, 3) None (422, 422, 3) None (161, 161, 3) None (373, 373, 3) None (140, 140, 3) None (484, 484, 3) None (339, 339, 3) None (512, 512, 3) None (123, 123, 3) None (429, 429, 3) None (311, 311, 3) None (138, 138, 3) None (161, 161, 3) None (493, 493, 3) None (189, 189, 3) None (169, 169, 3) None (131, 131, 3) None (269, 269, 3) None (438, 438, 3) None (450, 450, 3) None (102, 102, 3) None (164, 164, 3) None (144, 144, 3) None (123, 123, 3) None (380, 380, 3) None (370, 370, 3) None (413, 413, 3) None (400, 400, 3) None (521, 521, 3) None (187, 187, 3) None (103, 103, 3) None (357, 357, 3) None (411, 411, 3) None (140, 140, 3) None (244, 244, 3) None (272, 272, 3) None (114, 114, 3) None (267, 267, 3) None (569, 569, 3) None (479, 479, 3) None (123, 123, 3) None (418, 418, 3) None (363, 363, 3) None (178, 178, 3) None (240, 240, 3) None (470, 470, 3) None (210, 210, 3) None (157, 157, 3) None (312, 312, 3) None (91, 91, 3) None (374, 374, 3) None (241, 241, 3) None (205, 205, 3) None (310, 310, 3) None (300, 300, 3) None (499, 499, 3) None (390, 390, 3) None (465, 465, 3) None (586, 586, 3) None (406, 406, 3) None (184, 184, 3) None (526, 526, 3) None (211, 211, 3) None (543, 543, 3) None (363, 363, 3) None (226, 226, 3) None (196, 196, 3) None (160, 160, 3) None (488, 488, 3) None (162, 162, 3) None (307, 307, 3) None (158, 158, 3) None (464, 464, 3) None (305, 305, 3) None (295, 295, 3) None (399, 399, 3) None (154, 154, 3) None (335, 335, 3) None (122, 122, 3) None (211, 211, 3) None (299, 299, 3) None (465, 465, 3) None (166, 166, 3) None (664, 664, 3) None (134, 134, 3) None (145, 145, 3) None (224, 224, 3) None (115, 115, 3) None (398, 398, 3) None (108, 108, 3) None (130, 130, 3) None (434, 434, 3) None (307, 307, 3) None (169, 169, 3) None (367, 367, 3) None (456, 456, 3) None (337, 337, 3) None (275, 275, 3) None (384, 384, 3) None (507, 507, 3) None (304, 304, 3) None (489, 489, 3) None (305, 305, 3) None (358, 358, 3) None (180, 180, 3) None (212, 212, 3) None (480, 480, 3) None (298, 298, 3) None (698, 698, 3) None (313, 313, 3) None (515, 515, 3) None (194, 194, 3) None (143, 143, 3) None (531, 531, 3) None (237, 237, 3) None (149, 149, 3) None (425, 425, 3) None (208, 208, 3) None (157, 157, 3) None (123, 123, 3) None (191, 191, 3) None (487, 487, 3) None (424, 424, 3) None (377, 377, 3) None (250, 250, 3) None (386, 386, 3) None (255, 255, 3) None (472, 472, 3) None (850, 850, 3) None (254, 254, 3) None (190, 190, 3) None (194, 194, 3) None (374, 374, 3) None (165, 165, 3) None (141, 141, 3) None (425, 425, 3) None (365, 365, 3) None (408, 408, 3) None (457, 457, 3) None (535, 535, 3) None (294, 294, 3) None (378, 378, 3) None (405, 405, 3) None (382, 382, 3) None (125, 125, 3) None (557, 557, 3) None (350, 350, 3) None (140, 140, 3) None (285, 285, 3) None (451, 451, 3) None (371, 371, 3) None (206, 206, 3) None (348, 348, 3) None (510, 510, 3) None (243, 243, 3) None (567, 567, 3) None (271, 271, 3) None (329, 329, 3) None (189, 189, 3) None (533, 533, 3) None (271, 271, 3) None (187, 187, 3) None (251, 251, 3) None (109, 109, 3) None (285, 285, 3) None (274, 274, 3) None (110, 110, 3) None (166, 166, 3) None (648, 648, 3) None (355, 355, 3) None (163, 163, 3) None (377, 377, 3) None (153, 153, 3) None (121, 121, 3) None (212, 212, 3) None (275, 275, 3) None (174, 174, 3) None (464, 464, 3) None (419, 419, 3) None (178, 178, 3) None (150, 150, 3) None (753, 753, 3) None (162, 162, 3) None (584, 584, 3) None (422, 422, 3) None (538, 538, 3) None (453, 453, 3) None (492, 492, 3) None (158, 158, 3) None (352, 352, 3) None (429, 429, 3) None (410, 410, 3) None (421, 421, 3) None (309, 309, 3) None (466, 466, 3) None (460, 460, 3) None (245, 245, 3) None (126, 126, 3) None (141, 141, 3) None (434, 434, 3) None (222, 222, 3) None (190, 190, 3) None (278, 278, 3) None (181, 181, 3) None (149, 149, 3) None (157, 157, 3) None (199, 199, 3) None (152, 152, 3) None (127, 127, 3) None (176, 176, 3) None (179, 179, 3) None (395, 395, 3) None (112, 112, 3) None (289, 289, 3) None (540, 540, 3) None (408, 408, 3) None (450, 450, 3) None (159, 159, 3) None (483, 483, 3) None (218, 218, 3) None (404, 404, 3) None (237, 237, 3) None (158, 158, 3) None (599, 599, 3) None (498, 498, 3) None (225, 225, 3) None (490, 490, 3) None (390, 390, 3) None (487, 487, 3) None (140, 140, 3) None (443, 443, 3) None (276, 276, 3) None (571, 571, 3) None (149, 149, 3) None (154, 154, 3) None (141, 141, 3) None (377, 377, 3) None (151, 151, 3) None (329, 329, 3) None (195, 195, 3) None (138, 138, 3) None (196, 196, 3) None (186, 186, 3) None (151, 151, 3) None (412, 412, 3) None (253, 253, 3) None (373, 373, 3) None (509, 509, 3) None (347, 347, 3) None (200, 200, 3) None (421, 421, 3) None (630, 630, 3) None (425, 425, 3) None (439, 439, 3) None (444, 444, 3) None (428, 428, 3) None (155, 155, 3) None (184, 184, 3) None (579, 579, 3) None (121, 121, 3) None (377, 377, 3) None (315, 315, 3) None (507, 507, 3) None (436, 436, 3) None (190, 190, 3) None (529, 529, 3) None (116, 116, 3) None (217, 217, 3) None (866, 866, 3) None (360, 360, 3) None (124, 124, 3) None (303, 303, 3) None (280, 280, 3) None (190, 190, 3) None (176, 176, 3) None (106, 106, 3) None (83, 83, 3) None (129, 129, 3) None (253, 253, 3) None (403, 403, 3) None (91, 91, 3) None (547, 547, 3) None (132, 132, 3) None (524, 524, 3) None (499, 499, 3) None (118, 118, 3) None (78, 78, 3) None (104, 104, 3) None (352, 352, 3) None (110, 110, 3) None (75, 75, 3) None (130, 130, 3) None (124, 124, 3) None (367, 367, 3) None (118, 118, 3) None (93, 93, 3) None (86, 86, 3) None (137, 137, 3) None (109, 109, 3) None (80, 80, 3) None (149, 149, 3) None (74, 74, 3) None (141, 141, 3) None (158, 158, 3) None (150, 150, 3) None (101, 101, 3) None (159, 159, 3) None (517, 517, 3) None (91, 91, 3) None (116, 116, 3) None (376, 376, 3) None (197, 197, 3) None (542, 542, 3) None (151, 151, 3) None (83, 83, 3) None (151, 151, 3) None (138, 138, 3) None (162, 162, 3) None (271, 271, 3) None (118, 118, 3) None (199, 199, 3) None (110, 110, 3) None (142, 142, 3) None (106, 106, 3) None (102, 102, 3) None (115, 115, 3) None (116, 116, 3) None (103, 103, 3) None (91, 91, 3) None (622, 622, 3) None (459, 459, 3) None (155, 155, 3) None (422, 422, 3) None (114, 114, 3) None (148, 148, 3) None (100, 100, 3) None (113, 113, 3) None (540, 540, 3) None (561, 561, 3) None (63, 63, 3) None (193, 193, 3) None (81, 81, 3) None (115, 115, 3) None (101, 101, 3) None (149, 149, 3) None (402, 402, 3) None (97, 97, 3) None (208, 208, 3) None (132, 132, 3) None (107, 107, 3) None (124, 124, 3) None (103, 103, 3) None (143, 143, 3) None (428, 428, 3) None (432, 432, 3) None (88, 88, 3) None (555, 555, 3) None (448, 448, 3) None (443, 443, 3) None (100, 100, 3) None (348, 348, 3) None (111, 111, 3) None (336, 336, 3) None (151, 151, 3) None (478, 478, 3) None (85, 85, 3) None (113, 113, 3) None (99, 99, 3) None (488, 488, 3) None (97, 97, 3) None (246, 246, 3) None (217, 217, 3) None (100, 100, 3) None (94, 94, 3) None (168, 168, 3) None (435, 435, 3) None (101, 101, 3) None (159, 159, 3) None (77, 77, 3) None (150, 150, 3) None (451, 451, 3) None (127, 127, 3) None (148, 148, 3) None (137, 137, 3) None (516, 516, 3) None (152, 152, 3) None (151, 151, 3) None (437, 437, 3) None (118, 118, 3) None (493, 493, 3) None (104, 104, 3) None (622, 622, 3) None (214, 214, 3) None (400, 400, 3) None (83, 83, 3) None (197, 197, 3) None (543, 543, 3) None (103, 103, 3) None (191, 191, 3) None (423, 423, 3) None (256, 256, 3) None (90, 90, 3) None (418, 418, 3) None (443, 443, 3) None (163, 163, 3) None (66, 66, 3) None (94, 94, 3) None (135, 135, 3) None (90, 90, 3) None (89, 89, 3) None (180, 180, 3) None (142, 142, 3) None (95, 95, 3) None (534, 534, 3) None (210, 210, 3) None (142, 142, 3) None (97, 97, 3) None (148, 148, 3) None (122, 122, 3) None (81, 81, 3) None (86, 86, 3) None (98, 98, 3) None (163, 163, 3) None (122, 122, 3) None (158, 158, 3) None (441, 441, 3) None (248, 248, 3) None (424, 424, 3) None (95, 95, 3) None (511, 511, 3) None (245, 245, 3) None (133, 133, 3) None (149, 149, 3) None (483, 483, 3) None (177, 177, 3) None (202, 202, 3) None (74, 74, 3) None (227, 227, 3) None (137, 137, 3) None (86, 86, 3) None (121, 121, 3) None (526, 526, 3) None (148, 148, 3) None (403, 403, 3) None (164, 164, 3) None (299, 299, 3) None (455, 455, 3) None (155, 155, 3) None (137, 137, 3) None (99, 99, 3) None (60, 60, 3) None (84, 84, 3) None (102, 102, 3) None (171, 171, 3) None (100, 100, 3) None (96, 96, 3) None (526, 526, 3) None (432, 432, 3) None (250, 250, 3) None (250, 250, 3) None (107, 107, 3) None (504, 504, 3) None (118, 118, 3) None (191, 191, 3) None (518, 518, 3) None (506, 506, 3) None (104, 104, 3) None (432, 432, 3) None (515, 515, 3) None (158, 158, 3) None (87, 87, 3) None (366, 366, 3) None (275, 275, 3) None (398, 398, 3) None (193, 193, 3) None (464, 464, 3) None (90, 90, 3) None (172, 172, 3) None (93, 93, 3) None (167, 167, 3) None (130, 130, 3) None (187, 187, 3) None (187, 187, 3) None (119, 119, 3) None (102, 102, 3) None (120, 120, 3) None (511, 511, 3) None (106, 106, 3) None (387, 387, 3) None (494, 494, 3) None (110, 110, 3) None (163, 163, 3) None (155, 155, 3) None (88, 88, 3) None (129, 129, 3) None (112, 112, 3) None (110, 110, 3) None (123, 123, 3) None (73, 73, 3) None (514, 514, 3) None (100, 100, 3) None (168, 168, 3) None (55, 55, 3) None (90, 90, 3) None (171, 171, 3) None (83, 83, 3) None (107, 107, 3) None (359, 359, 3) None (385, 385, 3) None (148, 148, 3) None (133, 133, 3) None (108, 108, 3) None (437, 437, 3) None (595, 595, 3) None (501, 501, 3) None (153, 153, 3) None (178, 178, 3) None (121, 121, 3) None (121, 121, 3) None (469, 469, 3) None (177, 177, 3) None (154, 154, 3) None (115, 115, 3) None (96, 96, 3) None (515, 515, 3) None (107, 107, 3) None (536, 536, 3) None (298, 298, 3) None (536, 536, 3) None (103, 103, 3) None (85, 85, 3) None (483, 483, 3) None (129, 129, 3) None (105, 105, 3) None (155, 155, 3) None (83, 83, 3) None (174, 174, 3) None (477, 477, 3) None (263, 263, 3) None (399, 399, 3) None (435, 435, 3) None (99, 99, 3) None (132, 132, 3) None (106, 106, 3) None (373, 373, 3) None (409, 409, 3) None (153, 153, 3) None (412, 412, 3) None (105, 105, 3) None (54, 54, 3) None (152, 152, 3) None (463, 463, 3) None (463, 463, 3) None (307, 307, 3) None (316, 316, 3) None (118, 118, 3) None (183, 183, 3) None (198, 198, 3) None (109, 109, 3) None (139, 139, 3) None (187, 187, 3) None (183, 183, 3) None (91, 91, 3) None (576, 576, 3) None (143, 143, 3) None (93, 93, 3) None (101, 101, 3) None (91, 91, 3) None (166, 166, 3) None (62, 62, 3) None (98, 98, 3) None (171, 171, 3) None (87, 87, 3) None (169, 169, 3) None (155, 155, 3) None (90, 90, 3) None (165, 165, 3) None (165, 165, 3) None (112, 112, 3) None (119, 119, 3) None (154, 154, 3) None (100, 100, 3) None (183, 183, 3) None (76, 76, 3) None (204, 204, 3) None (108, 108, 3) None (92, 92, 3) None (551, 551, 3) None (185, 185, 3) None (321, 321, 3) None (185, 185, 3) None (622, 622, 3) None (139, 139, 3) None (112, 112, 3) None (229, 229, 3) None (114, 114, 3) None (145, 145, 3) None (170, 170, 3) None (88, 88, 3) None (79, 79, 3) None (153, 153, 3) None (140, 140, 3) None (278, 278, 3) None (115, 115, 3) None (133, 133, 3) None (464, 464, 3) None (411, 411, 3) None (121, 121, 3) None (172, 172, 3) None (378, 378, 3) None (93, 93, 3) None (194, 194, 3) None (237, 237, 3) None (484, 484, 3) None (92, 92, 3) None (150, 150, 3) None (124, 124, 3) None (454, 454, 3) None (633, 633, 3) None (167, 167, 3) None (295, 295, 3) None (97, 97, 3) None (345, 345, 3) None (615, 615, 3) None (446, 446, 3) None (98, 98, 3) None (432, 432, 3) None (137, 137, 3) None (489, 489, 3) None (467, 467, 3) None (116, 116, 3) None (185, 185, 3) None (170, 170, 3) None (620, 620, 3) None (115, 115, 3) None (388, 388, 3) None (85, 85, 3) None (172, 172, 3) None (470, 470, 3) None (465, 465, 3) None (428, 428, 3) None (460, 460, 3) None (122, 122, 3) None (88, 88, 3) None (157, 157, 3) None (410, 410, 3) None (475, 475, 3) None (111, 111, 3) None (295, 295, 3) None (65, 65, 3) None (66, 66, 3) None (418, 418, 3) None (107, 107, 3) None (103, 103, 3) None (460, 460, 3) None (132, 132, 3) None (98, 98, 3) None (534, 534, 3) None (109, 109, 3) None (84, 84, 3) None (69, 69, 3) None (105, 105, 3) None (290, 290, 3) None (412, 412, 3) None (399, 399, 3) None (334, 334, 3) None (164, 164, 3) None (207, 207, 3) None (506, 506, 3) None (73, 73, 3) None (98, 98, 3) None (605, 605, 3) None (169, 169, 3) None (70, 70, 3) None (115, 115, 3) None (117, 117, 3) None (456, 456, 3) None (128, 128, 3) None (405, 405, 3) None (115, 115, 3) None (156, 156, 3) None (81, 81, 3) None (90, 90, 3) None (475, 475, 3) None (117, 117, 3) None (361, 361, 3) None (165, 165, 3) None (164, 164, 3) None (471, 471, 3) None (180, 180, 3) None (123, 123, 3) None (157, 157, 3) None (94, 94, 3) None (99, 99, 3) None (198, 198, 3) None (393, 393, 3) None (83, 83, 3) None (410, 410, 3) None (473, 473, 3) None (114, 114, 3) None (104, 104, 3) None (79, 79, 3) None (85, 85, 3) None (278, 278, 3) None (402, 402, 3) None (185, 185, 3) None (171, 171, 3) None (91, 91, 3) None (99, 99, 3) None (121, 121, 3) None (119, 119, 3) None (472, 472, 3) None (153, 153, 3) None (266, 266, 3) None (377, 377, 3) None (151, 151, 3) None (567, 567, 3) None (163, 163, 3) None (479, 479, 3) None (151, 151, 3) None (107, 107, 3) None (487, 487, 3) None (80, 80, 3) None (236, 236, 3) None (417, 417, 3) None (397, 397, 3) None (245, 245, 3) None (132, 132, 3) None (106, 106, 3) None (141, 141, 3) None (295, 295, 3) None (88, 88, 3) None (109, 109, 3) None (558, 558, 3) None (517, 517, 3) None (191, 191, 3) None (90, 90, 3) None (368, 368, 3) None (333, 333, 3) None (515, 515, 3) None (578, 578, 3) None (121, 121, 3) None (565, 565, 3) None (566, 566, 3) None (718, 718, 3) None (89, 89, 3) None (381, 381, 3) None (386, 386, 3) None (173, 173, 3) None (465, 465, 3) None (141, 141, 3) None (164, 164, 3) None (156, 156, 3) None (153, 153, 3) None (191, 191, 3) None (654, 654, 3) None (240, 240, 3) None (152, 152, 3) None (158, 158, 3) None (146, 146, 3) None (83, 83, 3) None (122, 122, 3) None (172, 172, 3) None (108, 108, 3) None (544, 544, 3) None (403, 403, 3) None (90, 90, 3) None (162, 162, 3) None (335, 335, 3) None (171, 171, 3) None (147, 147, 3) None (81, 81, 3) None (123, 123, 3) None (164, 164, 3) None (94, 94, 3) None (77, 77, 3) None (140, 140, 3) None (188, 188, 3) None (557, 557, 3) None (521, 521, 3) None (110, 110, 3) None (180, 180, 3) None (166, 166, 3) None (86, 86, 3) None (99, 99, 3) None (134, 134, 3) None (517, 517, 3) None (124, 124, 3) None (413, 413, 3) None (280, 280, 3) None (377, 377, 3) None (174, 174, 3) None (529, 529, 3) None (97, 97, 3) None (579, 579, 3) None (115, 115, 3) None (555, 555, 3) None (58, 58, 3) None (443, 443, 3) None (178, 178, 3) None (364, 364, 3) None (122, 122, 3) None (513, 513, 3) None (144, 144, 3) None (532, 532, 3) None (159, 159, 3) None (106, 106, 3) None (586, 586, 3) None (118, 118, 3) None (165, 165, 3) None (65, 65, 3) None (192, 192, 3) None (88, 88, 3) None (134, 134, 3) None (67, 67, 3) None (110, 110, 3) None (175, 175, 3) None (139, 139, 3) None (443, 443, 3) None (444, 444, 3) None (124, 124, 3) None (219, 219, 3) None (134, 134, 3) None (92, 92, 3) None (97, 97, 3) None (90, 90, 3) None (112, 112, 3) None (186, 186, 3) None (451, 451, 3) None (92, 92, 3) None (134, 134, 3) None (448, 448, 3) None (69, 69, 3) None (101, 101, 3) None (400, 400, 3) None (174, 174, 3) None (149, 149, 3) None (521, 521, 3) None (73, 73, 3) None (346, 346, 3) None (527, 527, 3) None (128, 128, 3) None (75, 75, 3) None (223, 223, 3) None (102, 102, 3) None (167, 167, 3) None (122, 122, 3) None (582, 582, 3) None (567, 567, 3) None (164, 164, 3) None (166, 166, 3) None (565, 565, 3) None (332, 332, 3) None (492, 492, 3) None (99, 99, 3) None (73, 73, 3) None (559, 559, 3) None (141, 141, 3) None (159, 159, 3) None (113, 113, 3) None (88, 88, 3) None (208, 208, 3) None (116, 116, 3) None (165, 165, 3) None (138, 138, 3) None (142, 142, 3) None (82, 82, 3) None (80, 80, 3) None (188, 188, 3) None (141, 141, 3) None (376, 376, 3) None (163, 163, 3) None (192, 192, 3) None (172, 172, 3) None (425, 425, 3) None (90, 90, 3) None (420, 420, 3) None (363, 363, 3) None (189, 189, 3) None (353, 353, 3) None (134, 134, 3) None (166, 166, 3) None (441, 441, 3) None (472, 472, 3) None (499, 499, 3) None (270, 270, 3) None (644, 644, 3) None (82, 82, 3) None (739, 739, 3) None (555, 555, 3) None (88, 88, 3) None (461, 461, 3) None (113, 113, 3) None (518, 518, 3) None (453, 453, 3) None (99, 99, 3) None (676, 676, 3) None (614, 614, 3) None (530, 530, 3) None (123, 123, 3) None (496, 496, 3) None (684, 684, 3) None (676, 676, 3) None (471, 471, 3) None (194, 194, 3) None (83, 83, 3) None (986, 986, 3) None (681, 681, 3) None (624, 624, 3) None (667, 667, 3) None (897, 897, 3) None (893, 893, 3) None (107, 107, 3) None (472, 472, 3) None (85, 85, 3) None (469, 469, 3) None (562, 562, 3) None (1268, 1268, 3) None (115, 115, 3) None (361, 361, 3) None (597, 597, 3) None (600, 600, 3) None (75, 75, 3) None (957, 957, 3) None (669, 669, 3) None (739, 739, 3) None (87, 87, 3) None (140, 140, 3) None (1126, 1126, 3) None (787, 788, 3) None (966, 966, 3) None (668, 668, 3) None (188, 188, 3) None (699, 699, 3) None (413, 413, 3) None (582, 582, 3) None (115, 115, 3) None (692, 692, 3) None (86, 86, 3) None (567, 567, 3) None (133, 133, 3) None (456, 456, 3) None (193, 193, 3) None (398, 398, 3) None (435, 435, 3) None (538, 538, 3) None (702, 702, 3) None (780, 780, 3) None (156, 156, 3) None (838, 838, 3) None (176, 176, 3) None (396, 396, 3) None (187, 187, 3) None (147, 147, 3) None (106, 106, 3) None (626, 626, 3) None (167, 167, 3) None (136, 136, 3) None (778, 778, 3) None (155, 155, 3) None (435, 435, 3) None (168, 168, 3) None (181, 181, 3) None (989, 989, 3) None (856, 856, 3) None (690, 690, 3) None (672, 672, 3) None (461, 461, 3) None (632, 632, 3) None (578, 578, 3) None (120, 120, 3) None (612, 612, 3) None (514, 514, 3) None (122, 122, 3) None (569, 569, 3) None (496, 496, 3) None (584, 584, 3) None (354, 354, 3) None (524, 524, 3) None (756, 756, 3) None (181, 181, 3) None (138, 138, 3) None (679, 679, 3) None (710, 710, 3) None (494, 494, 3) None (120, 120, 3) None (575, 575, 3) None (800, 800, 3) None (578, 578, 3) None (622, 622, 3) None (932, 932, 3) None (904, 904, 3) None (581, 581, 3) None (785, 785, 3) None (931, 931, 3) None (578, 578, 3) None (842, 842, 3) None (356, 356, 3) None (700, 700, 3) None (103, 103, 3) None (450, 450, 3) None (99, 99, 3) None (1114, 1114, 3) None (647, 647, 3) None (439, 439, 3) None (144, 144, 3) None (360, 360, 3) None (578, 578, 3) None (968, 968, 3) None (104, 104, 3) None (174, 174, 3) None (845, 845, 3) None (165, 165, 3) None (527, 527, 3) None (77, 77, 3) None (1000, 1000, 3) None (123, 123, 3) None (114, 114, 3) None (1045, 1045, 3) None (124, 124, 3) None (735, 735, 3) None (786, 786, 3) None (684, 684, 3) None (745, 745, 3) None (108, 108, 3) None (144, 144, 3) None (584, 584, 3) None (170, 170, 3) None (431, 431, 3) None (79, 79, 3) None (118, 118, 3) None (106, 106, 3) None (456, 456, 3) None (455, 455, 3) None (588, 588, 3) None (622, 622, 3) None (189, 189, 3) None (99, 99, 3) None (1065, 1065, 3) None (51, 51, 3) None (638, 638, 3) None (520, 520, 3) None (138, 138, 3) None (124, 124, 3) None (453, 453, 3) None (625, 625, 3) None (59, 59, 3) None (455, 455, 3) None (166, 166, 3) None (651, 651, 3) None (540, 540, 3) None (76, 76, 3) None (95, 95, 3) None (176, 176, 3) None (146, 146, 3) None (66, 66, 3) None (71, 71, 3) None (73, 73, 3) None (119, 119, 3) None (125, 125, 3) None (115, 115, 3) None (458, 458, 3) None (158, 158, 3) None (947, 947, 3) None (60, 60, 3) None (185, 185, 3) None (97, 97, 3) None (61, 61, 3) None (60, 60, 3) None (601, 601, 3) None (435, 435, 3) None (726, 726, 3) None (109, 109, 3) None (63, 63, 3) None (66, 66, 3) None (606, 606, 3) None (176, 176, 3) None (105, 105, 3) None (561, 561, 3) None (156, 156, 3) None (167, 167, 3) None (481, 481, 3) None (73, 73, 3) None (728, 728, 3) None (197, 197, 3) None (441, 441, 3) None (556, 556, 3) None (910, 910, 3) None (64, 64, 3) None (502, 502, 3) None (689, 689, 3) None (73, 73, 3) None (406, 406, 3) None (166, 166, 3) None (595, 595, 3) None (524, 524, 3) None (809, 809, 3) None (1000, 1000, 3) None (136, 136, 3) None (443, 443, 3) None (77, 77, 3) None (612, 612, 3) None (1432, 1432, 3) None (401, 401, 3) None (171, 171, 3) None (64, 64, 3) None (523, 523, 3) None (140, 140, 3) None (137, 137, 3) None (278, 278, 3) None (284, 284, 3) None (177, 177, 3) None (163, 163, 3) None (414, 414, 3) None (474, 474, 3) None (154, 154, 3) None (444, 444, 3) None (514, 514, 3) None (378, 378, 3) None (120, 120, 3) None (203, 203, 3) None (369, 369, 3) None (107, 107, 3) None (110, 110, 3) None (161, 161, 3) None (97, 97, 3) None (380, 380, 3) None (507, 507, 3) None (214, 214, 3) None (592, 592, 3) None (162, 162, 3) None (312, 312, 3) None (1029, 1029, 3) None (255, 255, 3) None (176, 176, 3) None (498, 498, 3) None (181, 181, 3) None (159, 159, 3) None (370, 370, 3) None (211, 211, 3) None (167, 167, 3) None (388, 388, 3) None (170, 170, 3) None (179, 179, 3) None (325, 325, 3) None (234, 234, 3) None (272, 272, 3) None (273, 273, 3) None (171, 171, 3) None (101, 101, 3) None (121, 121, 3) None (462, 462, 3) None (630, 630, 3) None (146, 146, 3) None (184, 184, 3) None (358, 358, 3) None (359, 359, 3) None (198, 198, 3) None (108, 108, 3) None (201, 201, 3) None (236, 236, 3) None (121, 121, 3) None (71, 71, 3) None (248, 248, 3) None (128, 128, 3) None (429, 429, 3) None (192, 192, 3) None (223, 223, 3) None (809, 809, 3) None (179, 179, 3) None (318, 318, 3) None (100, 100, 3) None (169, 169, 3) None (193, 193, 3) None (349, 349, 3) None (931, 931, 3) None (226, 226, 3) None (364, 364, 3) None (409, 409, 3) None (762, 762, 3) None (121, 121, 3) None (220, 220, 3) None (169, 169, 3) None (243, 243, 3) None (134, 134, 3) None (155, 155, 3) None (121, 121, 3) None (183, 183, 3) None (219, 219, 3) None (485, 485, 3) None (229, 229, 3) None (359, 359, 3) None (269, 269, 3) None (497, 497, 3) None (395, 395, 3) None (221, 221, 3) None (165, 165, 3) None (270, 270, 3) None (188, 188, 3) None (547, 547, 3) None (296, 296, 3) None (191, 191, 3) None (144, 144, 3) None (108, 108, 3) None (176, 176, 3) None (150, 150, 3) None (907, 907, 3) None (291, 291, 3) None (185, 185, 3) None (361, 361, 3) None (297, 297, 3) None (143, 143, 3) None (459, 459, 3) None (376, 376, 3) None (1210, 1210, 3) None (147, 147, 3) None (169, 169, 3) None (319, 319, 3) None (448, 448, 3) None (189, 189, 3) None (336, 336, 3) None (699, 699, 3) None (306, 306, 3) None (197, 197, 3) None (242, 242, 3) None (136, 136, 3) None (641, 641, 3) None (225, 225, 3) None (253, 253, 3) None (505, 505, 3) None (102, 102, 3) None (253, 253, 3) None (157, 157, 3) None (192, 192, 3) None (331, 331, 3) None (1046, 1046, 3) None (65, 65, 3) None (322, 322, 3) None (299, 299, 3) None (274, 274, 3) None (169, 169, 3) None (788, 788, 3) None (57, 57, 3) None (265, 265, 3) None (134, 134, 3) None (139, 139, 3) None (255, 255, 3) None (135, 135, 3) None (205, 205, 3) None (235, 235, 3) None (200, 200, 3) None (393, 393, 3) None (233, 233, 3) None (230, 230, 3) None (123, 123, 3) None (226, 226, 3) None (166, 166, 3) None (190, 190, 3) None (868, 868, 3) None (87, 87, 3) None (652, 652, 3) None (736, 736, 3) None (178, 178, 3) None (370, 370, 3) None (121, 121, 3) None (524, 524, 3) None (514, 514, 3) None (104, 104, 3) None (112, 112, 3) None (177, 177, 3) None (190, 190, 3) None (164, 164, 3) None (383, 383, 3) None (246, 246, 3) None (276, 276, 3) None (139, 139, 3) None (212, 212, 3) None (160, 160, 3) None (607, 607, 3) None (387, 387, 3) None (234, 234, 3) None (148, 148, 3) None (364, 364, 3) None (153, 153, 3) None (307, 307, 3) None (274, 274, 3) None (294, 294, 3) None (356, 356, 3) None (114, 114, 3) None (202, 202, 3) None (316, 316, 3) None (178, 178, 3) None (194, 194, 3) None (296, 296, 3) None (188, 188, 3) None (473, 473, 3) None (185, 185, 3) None (201, 201, 3) None (136, 136, 3) None (137, 137, 3) None (130, 130, 3) None (230, 230, 3) None (230, 230, 3) None (198, 198, 3) None (159, 159, 3) None (235, 235, 3) None (703, 703, 3) None (453, 453, 3) None (277, 277, 3) None (110, 110, 3) None (422, 422, 3) None (190, 190, 3) None (457, 457, 3) None (135, 135, 3) None (392, 392, 3) None (202, 202, 3) None (129, 129, 3) None (374, 374, 3) None (1199, 1199, 3) None (302, 302, 3) None (150, 150, 3) None (697, 697, 3) None (263, 263, 3) None (209, 209, 3) None (211, 211, 3) None (480, 480, 3) None (184, 184, 3) None (340, 340, 3) None (351, 351, 3) None (172, 172, 3) None (129, 129, 3) None (180, 180, 3) None (157, 157, 3) None (244, 244, 3) None (228, 228, 3) None (263, 263, 3) None (489, 489, 3) None (170, 170, 3) None (333, 333, 3) None (135, 135, 3) None (231, 231, 3) None (610, 610, 3) None (555, 555, 3) None (341, 341, 3) None (145, 145, 3) None (121, 121, 3) None (397, 397, 3) None (124, 124, 3) None (298, 298, 3) None (56, 56, 3) None (709, 709, 3) None (296, 296, 3) None (229, 229, 3) None (246, 246, 3) None (160, 160, 3) None (706, 706, 3) None (678, 678, 3) None (575, 575, 3) None (349, 349, 3) None (113, 113, 3) None (198, 198, 3) None (431, 431, 3) None (388, 388, 3) None (231, 231, 3) None (379, 379, 3) None (57, 57, 3) None (493, 493, 3) None (133, 133, 3) None (85, 85, 3) None (188, 188, 3) None (451, 451, 3) None (179, 179, 3) None (256, 256, 3) None (428, 428, 3) None (136, 136, 3) None (111, 111, 3) None (67, 67, 3) None (162, 162, 3) None (138, 138, 3) None (205, 205, 3) None (273, 273, 3) None (1124, 1124, 3) None (729, 729, 3) None (178, 178, 3) None (426, 426, 3) None (128, 128, 3) None (152, 152, 3) None (145, 145, 3) None (520, 520, 3) None (156, 156, 3) None (125, 125, 3) None (209, 209, 3) None (684, 684, 3) None (285, 285, 3) None (158, 158, 3) None (350, 350, 3) None (118, 118, 3) None (268, 268, 3) None (479, 479, 3) None (226, 226, 3) None (459, 459, 3) None (439, 439, 3) None (335, 335, 3) None (446, 446, 3) None (107, 107, 3) None (289, 289, 3) None (829, 829, 3) None (284, 284, 3) None (231, 231, 3) None (346, 346, 3) None (367, 367, 3) None (272, 272, 3) None (156, 156, 3) None (476, 476, 3) None (116, 116, 3) None (858, 858, 3) None (136, 136, 3) None (548, 548, 3) None (138, 138, 3) None (308, 308, 3) None (361, 361, 3) None (165, 165, 3) None (227, 227, 3) None (259, 259, 3) None (439, 439, 3) None (55, 55, 3) None (359, 359, 3) None (279, 279, 3) None (345, 345, 3) None (372, 372, 3) None (159, 159, 3) None (276, 276, 3) None (943, 943, 3) None (272, 272, 3) None (120, 120, 3) None (113, 113, 3) None (277, 277, 3) None (813, 813, 3) None (157, 157, 3) None (154, 154, 3) None (178, 178, 3) None (326, 326, 3) None (256, 256, 3) None (93, 93, 3) None (143, 143, 3) None (167, 167, 3) None (364, 364, 3) None (693, 693, 3) None (254, 254, 3) None (152, 152, 3) None (166, 166, 3) None (186, 186, 3) None (269, 269, 3) None (259, 259, 3) None (452, 452, 3) None (163, 163, 3) None (295, 295, 3) None (369, 369, 3) None (132, 132, 3) None (80, 80, 3) None (725, 725, 3) None (455, 455, 3) None (477, 477, 3) None (135, 135, 3) None (334, 334, 3) None (1234, 1234, 3) None (174, 174, 3) None (219, 219, 3) None (314, 314, 3) None (58, 58, 3) None (338, 338, 3) None (122, 122, 3) None (290, 290, 3) None (260, 260, 3) None (118, 118, 3) None (295, 295, 3) None (419, 419, 3) None (95, 95, 3) None (291, 291, 3) None (164, 164, 3) None (197, 197, 3) None (624, 624, 3) None (279, 279, 3) None (489, 489, 3) None (324, 324, 3) None (172, 172, 3) None (208, 208, 3) None (153, 153, 3) None (153, 153, 3) None (750, 750, 3) None (215, 215, 3) None (272, 272, 3) None (212, 212, 3) None (274, 274, 3) None (474, 474, 3) None (416, 416, 3) None (376, 376, 3) None (183, 183, 3) None (298, 298, 3) None (198, 198, 3) None (142, 142, 3) None (311, 311, 3) None (289, 289, 3) None (104, 104, 3) None (368, 368, 3) None (337, 337, 3) None (107, 107, 3) None (152, 152, 3) None (207, 207, 3) None (195, 195, 3) None (184, 184, 3) None (318, 318, 3) None (111, 111, 3) None (157, 157, 3) None (930, 930, 3) None (439, 439, 3) None (177, 177, 3) None (144, 144, 3) None (393, 393, 3) None (178, 178, 3) None (180, 180, 3) None (224, 224, 3) None (217, 217, 3) None (244, 244, 3) None (131, 131, 3) None (572, 572, 3) None (293, 293, 3) None (199, 199, 3) None (118, 118, 3) None (402, 402, 3) None (321, 321, 3) None (143, 143, 3) None (965, 965, 3) None (169, 169, 3) None (144, 144, 3) None (181, 181, 3) None (778, 778, 3) None (67, 67, 3) None (164, 164, 3) None (147, 147, 3) None (332, 332, 3) None (578, 578, 3) None (66, 66, 3) None (462, 462, 3) None (559, 559, 3) None (342, 342, 3) None (191, 191, 3) None (336, 336, 3) None (102, 102, 3) None (196, 196, 3) None (549, 549, 3) None (525, 525, 3) None (892, 892, 3) None (200, 200, 3) None (154, 154, 3) None (581, 581, 3) None (292, 292, 3) None (212, 212, 3) None (427, 427, 3) None (1273, 1273, 3) None (266, 266, 3) None (321, 321, 3) None (1045, 1045, 3) None (118, 118, 3) None (304, 304, 3) None (347, 347, 3) None (557, 557, 3) None (897, 897, 3) None (886, 886, 3) None (133, 133, 3) None (124, 124, 3) None (132, 132, 3) None (251, 251, 3) None (258, 258, 3) None (515, 515, 3) None (197, 197, 3) None (218, 218, 3) None (183, 183, 3) None (171, 171, 3) None (231, 231, 3) None (199, 199, 3) None (328, 328, 3) None (175, 175, 3) None (1193, 1193, 3) None (854, 854, 3) None (128, 128, 3) None (528, 528, 3) None (528, 528, 3) None (399, 399, 3) None (444, 423, 3) None (2030, 2030, 3) None (1213, 1213, 3) None (595, 595, 3) None (86, 86, 3) None (642, 642, 3) None (122, 122, 3) None (188, 188, 3) None (1382, 1382, 3) None (950, 950, 3) None (125, 125, 3) None (463, 463, 3) None (170, 170, 3) None (392, 392, 3) None (120, 120, 3) None (731, 731, 3) None (1008, 1008, 3) None (161, 161, 3) None (559, 559, 3) None (123, 123, 3) None (758, 767, 3) None (671, 633, 3) None (1410, 1410, 3) None (141, 141, 3) None (105, 105, 3) None (124, 124, 3) None (410, 410, 3) None (416, 416, 3) None (854, 854, 3) None (120, 120, 3) None (199, 199, 3) None (814, 842, 3) None (663, 663, 3) None (115, 115, 3) None (115, 115, 3) None (1186, 1186, 3) None (1181, 1181, 3) None (629, 629, 3) None (769, 769, 3) None (419, 419, 3) None (117, 117, 3) None (132, 132, 3) None (382, 382, 3) None (193, 193, 3) None (1193, 1193, 3) None (1048, 1048, 3) None (108, 108, 3) None (671, 633, 3) None (668, 668, 3) None (590, 590, 3) None (146, 146, 3) None (115, 115, 3) None (473, 473, 3) None (582, 582, 3) None (107, 107, 3) None (137, 137, 3) None (83, 83, 3) None (197, 197, 3) None (108, 108, 3) None (163, 163, 3) None (690, 690, 3) None (397, 397, 3) None (163, 163, 3) None (450, 492, 3) None (110, 110, 3) None (666, 666, 3) None (129, 129, 3) None (132, 132, 3) None (426, 426, 3) None (604, 604, 3) None (143, 143, 3) None (162, 162, 3) None (363, 363, 3) None (176, 176, 3) None (94, 94, 3) None (444, 444, 3) None (1402, 1402, 3) None (405, 405, 3) None (2030, 2030, 3) None (93, 93, 3) None (221, 221, 3) None (568, 568, 3) None (85, 85, 3) None (174, 174, 3) None (418, 418, 3) None (126, 126, 3) None (119, 119, 3) None (526, 532, 3) None (560, 560, 3) None (674, 674, 3) None (132, 132, 3) None (555, 555, 3) None (158, 158, 3) None (365, 365, 3) None (123, 123, 3) None (155, 155, 3) None (95, 95, 3) None (168, 168, 3) None (156, 156, 3) None (473, 473, 3) None (642, 642, 3) None (507, 507, 3) None (136, 136, 3) None (141, 141, 3) None (528, 528, 3) None (473, 473, 3) None (164, 164, 3) None (161, 161, 3) None (181, 181, 3) None (382, 382, 3) None (176, 176, 3) None (403, 403, 3) None (160, 160, 3) None (194, 194, 3) None (374, 374, 3) None (136, 136, 3) None (1048, 1048, 3) None (453, 453, 3) None (157, 157, 3) None (1283, 1367, 3) None (107, 107, 3) None (140, 140, 3) None (631, 631, 3) None (255, 255, 3) None (490, 490, 3) None (171, 171, 3) None (137, 137, 3) None (671, 633, 3) None (133, 133, 3) None (415, 415, 3) None (155, 155, 3) None (190, 190, 3) None (201, 201, 3) None (164, 164, 3) None (419, 419, 3) None (133, 133, 3) None (671, 633, 3) None (568, 568, 3) None (105, 105, 3) None (185, 185, 3) None (1034, 1034, 3) None (509, 509, 3) None (149, 149, 3) None (494, 494, 3) None (127, 127, 3) None (404, 404, 3) None (140, 140, 3) None (499, 499, 3) None (151, 151, 3) None (385, 385, 3) None (130, 130, 3) None (715, 715, 3) None (191, 191, 3) None (419, 419, 3) None (75, 75, 3) None (231, 231, 3) None (98, 98, 3) None (440, 440, 3) None (88, 88, 3) None (122, 122, 3) None (129, 129, 3) None (146, 146, 3) None (631, 631, 3) None (114, 114, 3) None (71, 71, 3) None (131, 131, 3) None (485, 508, 3) None (132, 132, 3) None (137, 137, 3) None (785, 785, 3) None (126, 126, 3) None (361, 361, 3) None (1062, 1062, 3) None (731, 731, 3) None (186, 186, 3) None (125, 125, 3) None (139, 139, 3) None (1352, 1352, 3) None (164, 164, 3) None (183, 183, 3) None (159, 159, 3) None (101, 101, 3) None (1942, 1943, 3) None (115, 115, 3) None (604, 604, 3) None (166, 166, 3) None (164, 164, 3) None (731, 731, 3) None (395, 395, 3) None (397, 397, 3) None (312, 312, 3) None (560, 560, 3) None (132, 132, 3) None (91, 91, 3) None (797, 797, 3) None (607, 607, 3) None (211, 211, 3) None (128, 128, 3) None (705, 705, 3) None (186, 186, 3) None (157, 157, 3) None (494, 494, 3) None (418, 418, 3) None (113, 113, 3) None (674, 674, 3) None (254, 254, 3) None (363, 363, 3) None (511, 511, 3) None (1181, 1181, 3) None (444, 444, 3) None (95, 95, 3) None (268, 268, 3) None (92, 92, 3) None (143, 143, 3) None (461, 461, 3) None (1260, 1260, 3) None (94, 94, 3) None (187, 187, 3) None (368, 368, 3) None (460, 460, 3) None (159, 159, 3) None (155, 155, 3) None (461, 461, 3) None (166, 166, 3) None (752, 752, 3) None (485, 508, 3) None (568, 568, 3) None (197, 197, 3) None (71, 71, 3) None (368, 368, 3) None (84, 84, 3) None (176, 176, 3) None (114, 114, 3) None (797, 797, 3) None (1099, 1099, 3) None (1352, 1352, 3) None (155, 155, 3) None (109, 109, 3) None (135, 135, 3) None (106, 106, 3) None (404, 404, 3) None (111, 111, 3) None (743, 743, 3) None (820, 820, 3) None (218, 218, 3) None (220, 220, 3) None (163, 163, 3) None (142, 142, 3) None (168, 168, 3) None (126, 126, 3) None (195, 195, 3) None (403, 403, 3) None (187, 187, 3) None (146, 146, 3) None (137, 137, 3) None (221, 221, 3) None (320, 320, 3) None (1062, 1062, 3) None (1213, 1213, 3) None (399, 399, 3) None (499, 499, 3) None (153, 153, 3) None (164, 164, 3) None (140, 140, 3) None (133, 133, 3) None (424, 424, 3) None (779, 779, 3) None (87, 87, 3) None (505, 505, 3) None (136, 136, 3) None (99, 99, 3) None (663, 663, 3) None (298, 298, 3) None (99, 99, 3) None (85, 85, 3) None (1010, 1010, 3) None (119, 119, 3) None (1213, 1213, 3) None (367, 367, 3) None (206, 206, 3) None (312, 312, 3) None (404, 404, 3) None (102, 102, 3) None (1099, 1099, 3) None (575, 575, 3) None (190, 190, 3) None (647, 647, 3) None (671, 633, 3) None (752, 752, 3) None (131, 131, 3) None (511, 511, 3) None (147, 147, 3) None (750, 750, 3) None (197, 197, 3) None (618, 618, 3) None (162, 162, 3) None (291, 291, 3) None (125, 125, 3) None (3457, 3652, 3) None (382, 382, 3) None (100, 100, 3) None (571, 571, 3) None (1101, 1206, 3) None (671, 633, 3) None (89, 89, 3) None (158, 158, 3) None (188, 188, 3) None (71, 71, 3) None (127, 127, 3) None (703, 703, 3) None (132, 132, 3) None (110, 110, 3) None (671, 633, 3) None (186, 186, 3) None (461, 461, 3) None (873, 873, 3) None (404, 404, 3) None (163, 163, 3) None (112, 112, 3) None (153, 153, 3) None (418, 418, 3) None (100, 100, 3) None (123, 123, 3) None (114, 114, 3) None (107, 107, 3) None (165, 165, 3) None (161, 161, 3) None (491, 491, 3) None (140, 140, 3) None (692, 692, 3) None (183, 183, 3) None (265, 265, 3) None (116, 116, 3) None (109, 109, 3) None (1101, 1206, 3) None (179, 179, 3) None (124, 124, 3) None (187, 187, 3) None (172, 172, 3) None (180, 180, 3) None (128, 128, 3) None (148, 148, 3) None (444, 423, 3) None (218, 218, 3) None (671, 633, 3) None (86, 86, 3) None (313, 313, 3) None (499, 499, 3) None (1101, 1206, 3) None (167, 167, 3) None (95, 95, 3) None (130, 130, 3) None (191, 191, 3) None (443, 443, 3) None (588, 588, 3) None (178, 178, 3) None (509, 509, 3) None (95, 95, 3) None (131, 131, 3) None (172, 172, 3) None (298, 298, 3) None (528, 528, 3) None (166, 166, 3) None (1438, 1438, 3) None (361, 361, 3) None (769, 769, 3) None (128, 128, 3) None (131, 131, 3) None (156, 156, 3) None (225, 225, 3) None (684, 684, 3) None (120, 120, 3) None (541, 541, 3) None (642, 642, 3) None (106, 106, 3) None (687, 687, 3) None (194, 194, 3) None (154, 154, 3) None (125, 125, 3) None (167, 167, 3) None (154, 154, 3) None (647, 647, 3) None (180, 180, 3) None (154, 154, 3) None (360, 360, 3) None (93, 93, 3) None (95, 95, 3) None (328, 328, 3) None (571, 571, 3) None (496, 496, 3) None (135, 135, 3) None (1034, 1034, 3) None (163, 163, 3) None (186, 186, 3) None (241, 241, 3) None (143, 143, 3) None (3457, 3991, 3) None (115, 115, 3) None (119, 119, 3) None (133, 133, 3) None (473, 473, 3) None (671, 633, 3) None (155, 155, 3) None (157, 157, 3) None (494, 494, 3) None (162, 162, 3) None (122, 122, 3) None (84, 84, 3) None (368, 368, 3) None (267, 267, 3) None (122, 122, 3) None (71, 71, 3) None (707, 707, 3) None (245, 245, 3) None (110, 110, 3) None (541, 541, 3) None (245, 245, 3) None (105, 105, 3) None (288, 288, 3) None (160, 160, 3) None (262, 262, 3) None (326, 326, 3) None (419, 419, 3) None (445, 445, 3) None (137, 137, 3) None (127, 127, 3) None (410, 410, 3) None (672, 672, 3) None (168, 168, 3) None (204, 204, 3) None (131, 131, 3) None (550, 554, 3) None (124, 124, 3) None (443, 443, 3) None (484, 484, 3) None (255, 255, 3) None (194, 194, 3) None (537, 537, 3) None (185, 185, 3) None (468, 462, 3) None (119, 119, 3) None (475, 475, 3) None (83, 83, 3) None (115, 115, 3) None (221, 221, 3) None (130, 130, 3) None (383, 383, 3) None (96, 96, 3) None (395, 395, 3) None (174, 174, 3) None (187, 187, 3) None (445, 445, 3) None (521, 521, 3) None (273, 273, 3) None (885, 885, 3) None (1010, 1010, 3) None (582, 582, 3) None (112, 112, 3) None (2088, 2218, 3) None (133, 133, 3) None (690, 690, 3) None (116, 116, 3) None (1942, 1943, 3) None (146, 146, 3) None (92, 92, 3) None (131, 131, 3) None (314, 314, 3) None (114, 114, 3) None (555, 555, 3) None (363, 363, 3) None (616, 652, 3) None (176, 176, 3) None (3129, 3129, 3) None (474, 474, 3) None (181, 181, 3) None (168, 168, 3) None (156, 156, 3) None (195, 195, 3) None (494, 494, 3) None (647, 647, 3) None (106, 106, 3) None (368, 368, 3) None (187, 187, 3) None (176, 176, 3) None (131, 131, 3) None (137, 137, 3) None (704, 704, 3) None (159, 159, 3) None (154, 154, 3) None (137, 137, 3) None (139, 139, 3) None (147, 147, 3) None (1010, 1010, 3) None (750, 750, 3) None (1313, 1349, 3) None (392, 392, 3) None (210, 210, 3) None (407, 407, 3) None (174, 174, 3) None (209, 209, 3) None (1225, 1225, 3) None (162, 162, 3) None (196, 196, 3) None (179, 179, 3) None (812, 812, 3) None (166, 166, 3) None (707, 707, 3) None (153, 153, 3) None (131, 131, 3) None (171, 171, 3) None (237, 237, 3) None (410, 410, 3) None (122, 122, 3) None (154, 154, 3) None (136, 136, 3) None (363, 363, 3) None (112, 112, 3) None (856, 856, 3) None (1038, 1038, 3) None (164, 164, 3) None (395, 395, 3) None (159, 159, 3) None (490, 490, 3) None (1438, 1438, 3) None (131, 131, 3) None (186, 186, 3) None (671, 633, 3) None (137, 137, 3) None (178, 178, 3) None (397, 397, 3) None (174, 174, 3) None (87, 87, 3) None (361, 361, 3) None (1190, 1190, 3) None (485, 508, 3) None (490, 490, 3) None (122, 122, 3) None (618, 618, 3) None (690, 690, 3) None (311, 311, 3) None (1662, 1662, 3) None (690, 690, 3) None (115, 115, 3) None (573, 573, 3) None (157, 157, 3) None (228, 228, 3) None (88, 88, 3) None (669, 669, 3) None (1034, 1034, 3) None (839, 839, 3) None (386, 386, 3) None (1382, 1382, 3) None (707, 707, 3) None (93, 93, 3) None (125, 125, 3) None (571, 571, 3) None (106, 106, 3) None (541, 541, 3) None (448, 448, 3) None (121, 121, 3) None (195, 195, 3) None (151, 151, 3) None (155, 155, 3) None (157, 157, 3) None (450, 450, 3) None (126, 126, 3) None (121, 121, 3) None (190, 190, 3) None (395, 395, 3) None (357, 357, 3) None (154, 154, 3) None (671, 633, 3) None (251, 251, 3) None (113, 113, 3) None (444, 444, 3) None (656, 688, 3) None (131, 131, 3) None (168, 168, 3) None (2088, 2218, 3) None (1833, 1833, 3) None (671, 633, 3) None (165, 165, 3) None (108, 108, 3) None (75, 75, 3) None (1062, 1062, 3) None (568, 568, 3) None (426, 426, 3) None (92, 92, 3) None (560, 560, 3) None (461, 461, 3) None (93, 93, 3) None (1488, 1488, 3) None (97, 97, 3) None (1382, 1382, 3) None (457, 457, 3) None (124, 124, 3) None (107, 107, 3) None (186, 186, 3) None (595, 595, 3) None (361, 361, 3) None (1942, 1943, 3) None (173, 173, 3) None (98, 98, 3) None (137, 137, 3) None (398, 398, 3) None (130, 130, 3) None (150, 150, 3) None (124, 124, 3) None (1048, 1048, 3) None (139, 139, 3) None (967, 967, 3) None (235, 235, 3) None (116, 116, 3) None (172, 172, 3) None (368, 368, 3) None (122, 122, 3) None (178, 178, 3) None (671, 633, 3) None (392, 392, 3) None (107, 107, 3) None (856, 856, 3) None (967, 967, 3) None (96, 96, 3) None (140, 140, 3) None (155, 155, 3) None (663, 663, 3) None (146, 146, 3) None (97, 97, 3) None (94, 94, 3) None (121, 121, 3) None (122, 122, 3) None (124, 124, 3) None (542, 542, 3) None (145, 145, 3) None (1189, 1189, 3) None (141, 141, 3) None (169, 169, 3) None (312, 312, 3) None (115, 115, 3) None (614, 614, 3) None (141, 141, 3) None (422, 422, 3) None (95, 95, 3) None (104, 104, 3) None (632, 632, 3) None (509, 509, 3) None (167, 167, 3) None (856, 856, 3) None (174, 174, 3) None (1196, 1196, 3) None (74, 74, 3) None (62, 62, 3) None (82, 82, 3) None (1485, 1485, 3) None (66, 66, 3) None (105, 105, 3) None (79, 79, 3) None (1066, 1066, 3) None (578, 578, 3) None (893, 893, 3) None (178, 178, 3) None (896, 896, 3) None (603, 603, 3) None (528, 528, 3) None (658, 658, 3) None (738, 738, 3) None (78, 78, 3) None (54, 54, 3) None (70, 70, 3) None (127, 127, 3) None (155, 155, 3) None (123, 123, 3) None (120, 120, 3) None (686, 686, 3) None (417, 417, 3) None (674, 674, 3) None (83, 83, 3) None (150, 150, 3) None (97, 97, 3) None (129, 129, 3) None (439, 439, 3) None (481, 481, 3) None (77, 77, 3) None (446, 446, 3) None (114, 114, 3) None (371, 371, 3) None (107, 107, 3) None (122, 122, 3) None (88, 88, 3) None (427, 427, 3) None (92, 92, 3) None (852, 852, 3) None (114, 114, 3) None (1016, 1016, 3) None (835, 835, 3) None (94, 94, 3) None (655, 655, 3) None (879, 879, 3) None (132, 132, 3) None (1211, 1212, 3) None (72, 72, 3) None (426, 426, 3) None (113, 113, 3) None (1166, 1166, 3) None (1101, 1101, 3) None (145, 145, 3) None (182, 182, 3) None (172, 172, 3) None (546, 546, 3) None (534, 534, 3) None (147, 147, 3) None (72, 72, 3) None (100, 100, 3) None (116, 116, 3) None (90, 90, 3) None (1166, 1166, 3) None (1048, 1048, 3) None (1435, 1435, 3) None (150, 150, 3) None (84, 84, 3) None (78, 78, 3) None (1238, 1238, 3) None (613, 613, 3) None (657, 657, 3) None (58, 58, 3) None (812, 812, 3) None (171, 171, 3) None (564, 564, 3) None (90, 90, 3) None (59, 59, 3) None (62, 62, 3) None (986, 986, 3) None (91, 91, 3) None (1369, 1369, 3) None (182, 182, 3) None (151, 151, 3) None (447, 447, 3) None (85, 85, 3) None (641, 641, 3) None (367, 367, 3) None (1260, 1260, 3) None (414, 414, 3) None (1062, 1062, 3) None (645, 645, 3) None (365, 365, 3) None (859, 859, 3) None (130, 130, 3) None (791, 791, 3) None (73, 73, 3) None (1453, 1453, 3) None (655, 655, 3) None (402, 402, 3) None (659, 659, 3) None (89, 89, 3) None (71, 71, 3) None (727, 727, 3) None (198, 198, 3) None (546, 546, 3) None (809, 809, 3) None (73, 73, 3) None (777, 777, 3) None (1083, 1083, 3) None (751, 751, 3) None (63, 63, 3) None (877, 877, 3) None (834, 834, 3) None (89, 89, 3) None (114, 114, 3) None (1020, 1020, 3) None (706, 706, 3) None (692, 692, 3) None (118, 118, 3) None (183, 183, 3) None (95, 95, 3) None (415, 415, 3) None (149, 149, 3) None (374, 374, 3) None (83, 83, 3) None (1237, 1237, 3) None (1558, 1558, 3) None (167, 167, 3) None (453, 453, 3) None (150, 150, 3) None (643, 643, 3) None (514, 514, 3) None (976, 976, 3) None (785, 785, 3) None (483, 483, 3) None (894, 894, 3) None (191, 191, 3) None (56, 56, 3) None (454, 454, 3) None (95, 95, 3) None (71, 71, 3) None (1293, 1293, 3) None (81, 81, 3) None (1696, 1696, 3) None (560, 560, 3) None (487, 487, 3) None (68, 68, 3) None (686, 686, 3) None (170, 170, 3) None (1489, 1490, 3) None (943, 943, 3) None (826, 826, 3) None (69, 69, 3) None (154, 154, 3) None (384, 384, 3) None (58, 58, 3) None (1329, 1329, 3) None (101, 101, 3) None (1196, 1196, 3) None (1158, 1158, 3) None (593, 593, 3) None (425, 425, 3) None (74, 74, 3) None (66, 66, 3) None (454, 454, 3) None (422, 422, 3) None (656, 656, 3) None (574, 574, 3) None (385, 385, 3) None (1422, 1423, 3) None (621, 621, 3) None (145, 145, 3) None (1588, 1588, 3) None (365, 365, 3) None (545, 545, 3) None (178, 178, 3) None (394, 394, 3) None (84, 84, 3) None (128, 128, 3) None (142, 142, 3) None (137, 137, 3) None (89, 89, 3) None (1259, 1259, 3) None (593, 593, 3) None (825, 825, 3) None (523, 523, 3) None (381, 381, 3) None (958, 958, 3) None (419, 419, 3) None (490, 490, 3) None (529, 529, 3) None (137, 137, 3) None (473, 473, 3) None (364, 364, 3) None (121, 121, 3) None (631, 631, 3) None (166, 166, 3) None (411, 411, 3) None (866, 866, 3) None (700, 700, 3) None (440, 440, 3) None (574, 574, 3) None (701, 701, 3) None (1900, 1900, 3) None (182, 182, 3) None (86, 86, 3) None (82, 82, 3) None (446, 446, 3) None (448, 448, 3) None (935, 935, 3) None (371, 371, 3) None (147, 147, 3) None (106, 106, 3) None (65, 65, 3) None (383, 383, 3) None (173, 173, 3) None (119, 119, 3) None (65, 65, 3) None (113, 113, 3) None (128, 128, 3) None (86, 86, 3) None (181, 181, 3) None (60, 60, 3) None (71, 71, 3) None (77, 77, 3) None (105, 105, 3) None (80, 80, 3) None (91, 91, 3) None (487, 487, 3) None (508, 508, 3) None (125, 125, 3) None (479, 479, 3) None (115, 115, 3) None (827, 827, 3) None (534, 534, 3) None (121, 121, 3) None (375, 375, 3) None (92, 92, 3) None (72, 72, 3) None (62, 62, 3) None (228, 228, 3) None (85, 85, 3) None (376, 376, 3) None (151, 151, 3) None (51, 51, 3) None (73, 73, 3) None (746, 746, 3) None (376, 376, 3) None (154, 154, 3) None (49, 49, 3) None (83, 83, 3) None (116, 116, 3) None (72, 72, 3) None (110, 110, 3) None (66, 66, 3) None (75, 75, 3) None (607, 607, 3) None (363, 363, 3) None (591, 591, 3) None (169, 169, 3) None (68, 68, 3) None (108, 108, 3) None (126, 126, 3) None (170, 170, 3) None (156, 156, 3) None (139, 139, 3) None (101, 101, 3) None (75, 75, 3) None (111, 111, 3) None (99, 99, 3) None (444, 444, 3) None (149, 149, 3) None (53, 53, 3) None (85, 85, 3) None (691, 691, 3) None (61, 61, 3) None (667, 667, 3) None (121, 121, 3) None (59, 59, 3) None (106, 106, 3) None (556, 556, 3) None (75, 75, 3) None (199, 199, 3) None (115, 115, 3) None (118, 118, 3) None (112, 112, 3) None (106, 106, 3) None (533, 533, 3) None (103, 103, 3) None (102, 102, 3) None (711, 711, 3) None (92, 92, 3) None (80, 80, 3) None (137, 137, 3) None (129, 129, 3) None (527, 527, 3) None (92, 92, 3) None (135, 135, 3) None (137, 137, 3) None (95, 95, 3) None (1006, 1006, 3) None (117, 117, 3) None (544, 544, 3) None (115, 115, 3) None (81, 81, 3) None (592, 592, 3) None (97, 97, 3) None (68, 68, 3) None (383, 383, 3) None (482, 482, 3) None (63, 63, 3) None (53, 53, 3) None (62, 62, 3) None (164, 164, 3) None (563, 563, 3) None (187, 187, 3) None (569, 569, 3) None (103, 103, 3) None (109, 109, 3) None (495, 495, 3) None (79, 79, 3) None (370, 370, 3) None (101, 101, 3) None (173, 173, 3) None (71, 71, 3) None (409, 409, 3) None (153, 153, 3) None (61, 61, 3) None (87, 87, 3) None (111, 111, 3) None (638, 638, 3) None (102, 102, 3) None (142, 142, 3) None (79, 79, 3) None (101, 101, 3) None (101, 101, 3) None (106, 106, 3) None (369, 369, 3) None (86, 86, 3) None (108, 108, 3) None (684, 684, 3) None (75, 75, 3) None (428, 428, 3) None (82, 82, 3) None (78, 78, 3) None (103, 103, 3) None (200, 200, 3) None (185, 185, 3) None (671, 671, 3) None (158, 158, 3) None (146, 146, 3) None (169, 169, 3) None (607, 607, 3) None (86, 86, 3) None (128, 128, 3) None (504, 504, 3) None (194, 194, 3) None (51, 51, 3) None (94, 94, 3) None (78, 78, 3) None (120, 120, 3) None (66, 66, 3) None (146, 146, 3) None (406, 406, 3) None (71, 71, 3) None (375, 375, 3) None (88, 88, 3) None (104, 104, 3) None (92, 92, 3) None (145, 145, 3) None (404, 404, 3) None (534, 534, 3) None (839, 839, 3) None (124, 124, 3) None (110, 110, 3) None (93, 93, 3) None (57, 57, 3) None (417, 417, 3) None (512, 512, 3) None (138, 138, 3) None (54, 54, 3) None (189, 189, 3) None (114, 114, 3) None (100, 100, 3) None (142, 142, 3) None (118, 118, 3) None (71, 71, 3) None (89, 89, 3) None (90, 90, 3) None (139, 139, 3) None (65, 65, 3) None (390, 390, 3) None (147, 147, 3) None (729, 729, 3) None (101, 101, 3) None (141, 141, 3) None (175, 175, 3) None (64, 64, 3) None (135, 135, 3) None (117, 117, 3) None (505, 505, 3) None (581, 581, 3) None (111, 111, 3) None (155, 155, 3) None (768, 768, 3) None (107, 107, 3) None (167, 167, 3) None (701, 701, 3) None (145, 145, 3) None (106, 106, 3) None (137, 137, 3) None (586, 586, 3) None (514, 514, 3) None (549, 549, 3) None (361, 361, 3) None (136, 136, 3) None (58, 58, 3) None (99, 99, 3) None (465, 465, 3) None (79, 79, 3) None (71, 71, 3) None (129, 129, 3) None (531, 531, 3) None (77, 77, 3) None (116, 116, 3) None (92, 92, 3) None (108, 108, 3) None (86, 86, 3) None (627, 627, 3) None (358, 358, 3) None (125, 125, 3) None (70, 70, 3) None (108, 108, 3) None (57, 57, 3) None (83, 83, 3) None (74, 74, 3) None (131, 131, 3) None (137, 137, 3) None (587, 587, 3) None (93, 93, 3) None (456, 456, 3) None (95, 95, 3) None (146, 146, 3) None (653, 653, 3) None (99, 99, 3) None (70, 70, 3) None (575, 575, 3) None (126, 126, 3) None (107, 107, 3) None (182, 182, 3) None (58, 58, 3) None (164, 164, 3) None (136, 136, 3) None (65, 65, 3) None (94, 94, 3) None (84, 84, 3) None (703, 703, 3) None (506, 506, 3) None (51, 51, 3) None (96, 96, 3) None (135, 135, 3) None (653, 653, 3) None (80, 80, 3) None (127, 127, 3) None (96, 96, 3) None (141, 141, 3) None (469, 469, 3) None (611, 611, 3) None (121, 121, 3) None (351, 351, 3) None (71, 71, 3) None (176, 176, 3) None (144, 144, 3) None (118, 118, 3) None (73, 73, 3) None (74, 74, 3) None (52, 52, 3) None (105, 105, 3) None (64, 64, 3) None (162, 162, 3) None (509, 509, 3) None (666, 666, 3) None (74, 74, 3) None (85, 85, 3) None (485, 485, 3) None (88, 88, 3) None (58, 58, 3) None (538, 538, 3) None (55, 55, 3) None (121, 121, 3) None (162, 162, 3) None (145, 145, 3) None (69, 69, 3) None (140, 140, 3) None (93, 93, 3) None (109, 109, 3) None (197, 197, 3) None (100, 100, 3) None (109, 109, 3) None (647, 647, 3) None (74, 74, 3) None (85, 85, 3) None (127, 127, 3) None (68, 68, 3) None (74, 74, 3) None (101, 101, 3) None (59, 59, 3) None (117, 117, 3) None (538, 538, 3) None (73, 73, 3) None (120, 120, 3) None (710, 710, 3) None (84, 84, 3) None (122, 122, 3) None (577, 577, 3) None (304, 304, 3) None (57, 57, 3) None (115, 115, 3) None (109, 109, 3) None (127, 127, 3) None (145, 145, 3) None (157, 157, 3) None (433, 433, 3) None (587, 587, 3) None (85, 85, 3) None (172, 172, 3) None (591, 591, 3) None (98, 98, 3) None (106, 106, 3) None (113, 113, 3) None (77, 77, 3) None (159, 159, 3) None (79, 79, 3) None (172, 172, 3) None (150, 150, 3) None (99, 99, 3) None (83, 83, 3) None (114, 114, 3) None (77, 77, 3) None (418, 418, 3) None (89, 89, 3) None (68, 68, 3) None (395, 395, 3) None (139, 139, 3) None (521, 521, 3) None (182, 182, 3) None (152, 152, 3) None (662, 662, 3) None (95, 95, 3) None (739, 739, 3) None (689, 689, 3) None (542, 542, 3) None (93, 93, 3) None (70, 70, 3) None (115, 115, 3) None (94, 94, 3) None (81, 81, 3) None (486, 486, 3) None (145, 145, 3) None (123, 123, 3) None (109, 109, 3) None (159, 159, 3) None (414, 414, 3) None (627, 627, 3) None (175, 175, 3) None (143, 143, 3) None (136, 136, 3) None (188, 188, 3) None (61, 61, 3) None (85, 85, 3) None (165, 165, 3) None (417, 417, 3) None (537, 537, 3) None (119, 119, 3) None (661, 661, 3) None (81, 81, 3) None (169, 169, 3) None (743, 743, 3) None (92, 92, 3) None (384, 384, 3) None (80, 80, 3) None (82, 82, 3) None (452, 452, 3) None (109, 109, 3) None (123, 123, 3) None (498, 498, 3) None (137, 137, 3) None (79, 79, 3) None (94, 94, 3) None (96, 96, 3) None (769, 769, 3) None (602, 602, 3) None (797, 797, 3) None (554, 554, 3) None (576, 576, 3) None (85, 85, 3) None (49, 49, 3) None (1227, 1227, 3) None (155, 155, 3) None (99, 99, 3) None (67, 67, 3) None (153, 153, 3) None (154, 154, 3) None (68, 68, 3) None (103, 103, 3) None (90, 90, 3) None (118, 118, 3) None (97, 97, 3) None (539, 539, 3) None (165, 165, 3) None (490, 490, 3) None (153, 153, 3) None (71, 71, 3) None (123, 123, 3) None (118, 118, 3) None (147, 147, 3) None (337, 337, 3) None (105, 105, 3) None (67, 67, 3) None (139, 139, 3) None (527, 527, 3) None (112, 112, 3) None (77, 77, 3) None (144, 144, 3) None (151, 151, 3) None (147, 147, 3) None (73, 73, 3) None (70, 70, 3) None (133, 133, 3) None (612, 612, 3) None (133, 133, 3) None (100, 100, 3) None (114, 114, 3) None (699, 699, 3) None (107, 107, 3) None (533, 533, 3) None (106, 106, 3) None (91, 91, 3) None (101, 101, 3) None (615, 615, 3) None (92, 92, 3) None (81, 81, 3) None (66, 66, 3) None (113, 113, 3) None (85, 85, 3) None (82, 82, 3) None (149, 149, 3) None (68, 68, 3) None (76, 76, 3) None (569, 569, 3) None (513, 513, 3) None (74, 74, 3) None (83, 83, 3) None (151, 151, 3) None (190, 190, 3) None (368, 368, 3) None (68, 68, 3) None (182, 182, 3) None (188, 188, 3) None (139, 139, 3) None (189, 189, 3) None (433, 433, 3) None (104, 104, 3) None (66, 66, 3) None (159, 159, 3) None (148, 148, 3) None (70, 70, 3) None (136, 136, 3) None (555, 555, 3) None (126, 126, 3) None (174, 174, 3) None (154, 154, 3) None (95, 95, 3) None (87, 87, 3) None (57, 57, 3) None (100, 100, 3) None (491, 491, 3) None (129, 129, 3) None (756, 756, 3) None (73, 73, 3) None (616, 616, 3) None (118, 118, 3) None (810, 810, 3) None (63, 63, 3) None (105, 105, 3) None (105, 105, 3) None (555, 555, 3) None (129, 129, 3) None (80, 80, 3) None (83, 83, 3) None (86, 86, 3) None (820, 820, 3) None (185, 185, 3) None (735, 735, 3) None (119, 119, 3) None (72, 72, 3) None (116, 116, 3) None (104, 104, 3) None (87, 87, 3) None (186, 186, 3) None (128, 128, 3) None (74, 74, 3) None (525, 525, 3) None (151, 151, 3) None (64, 64, 3) None (137, 137, 3) None (62, 62, 3) None (125, 125, 3) None (700, 700, 3) None (629, 629, 3) None (587, 587, 3) None (600, 600, 3) None (434, 434, 3) None (117, 117, 3) None (98, 98, 3) None (63, 63, 3) None (110, 110, 3) None (70, 70, 3) None (366, 366, 3) None (189, 189, 3) None (55, 55, 3) None (607, 607, 3) None (148, 148, 3) None (449, 449, 3) None (168, 168, 3) None (400, 400, 3) None (378, 378, 3) None (365, 365, 3) None (140, 140, 3) None (78, 78, 3) None (684, 684, 3) None (126, 126, 3) None (308, 308, 3) None (89, 89, 3) None (105, 105, 3) None (682, 682, 3) None (354, 354, 3) None (63, 63, 3) None (100, 100, 3) None (101, 101, 3) None (139, 139, 3) None (542, 542, 3) None (140, 140, 3) None (74, 74, 3) None (92, 92, 3) None (378, 378, 3) None (414, 414, 3) None (233, 233, 3) None (380, 380, 3) None (151, 151, 3) None (362, 362, 3) None (103, 103, 3) None (254, 254, 3) None (217, 217, 3) None (399, 399, 3) None (169, 169, 3) None (66, 66, 3) None (80, 80, 3) None (404, 404, 3) None (127, 127, 3) None (199, 199, 3) None (394, 394, 3) None (300, 300, 3) None (1038, 1038, 3) None (112, 112, 3) None (110, 110, 3) None (85, 85, 3) None (113, 113, 3) None (374, 374, 3) None (254, 254, 3) None (473, 473, 3) None (439, 439, 3) None (131, 131, 3) None (96, 96, 3) None (385, 385, 3) None (197, 197, 3) None (104, 104, 3) None (1134, 1134, 3) None (122, 122, 3) None (616, 616, 3) None (112, 112, 3) None (97, 97, 3) None (1264, 1264, 3) None (361, 361, 3) None (1007, 1007, 3) None (163, 163, 3) None (115, 115, 3) None (264, 264, 3) None (115, 115, 3) None (196, 196, 3) None (349, 349, 3) None (1083, 1083, 3) None (732, 732, 3) None (125, 125, 3) None (174, 174, 3) None (175, 175, 3) None (169, 169, 3) None (426, 426, 3) None (115, 115, 3) None (500, 500, 3) None (94, 94, 3) None (768, 768, 3) None (925, 925, 3) None (137, 137, 3) None (110, 110, 3) None (198, 198, 3) None (202, 202, 3) None (168, 168, 3) None (805, 805, 3) None (108, 108, 3) None (893, 893, 3) None (441, 441, 3) None (169, 169, 3) None (140, 140, 3) None (97, 97, 3) None (492, 492, 3) None (121, 121, 3) None (359, 359, 3) None (147, 147, 3) None (76, 76, 3) None (225, 225, 3) None (440, 440, 3) None (650, 650, 3) None (409, 409, 3) None (160, 160, 3) None (168, 168, 3) None (525, 525, 3) None (153, 153, 3) None (101, 101, 3) None (145, 145, 3) None (828, 828, 3) None (404, 404, 3) None (314, 314, 3) None (444, 444, 3) None (150, 150, 3) None (226, 226, 3) None (410, 410, 3) None (143, 143, 3) None (370, 370, 3) None (115, 115, 3) None (268, 268, 3) None (126, 126, 3) None (173, 173, 3) None (171, 171, 3) None (390, 390, 3) None (126, 126, 3) None (150, 150, 3) None (500, 500, 3) None (75, 75, 3) None (311, 311, 3) None (139, 139, 3) None (673, 673, 3) None (101, 101, 3) None (501, 501, 3) None (74, 74, 3) None (377, 377, 3) None (458, 458, 3) None (96, 96, 3) None (107, 107, 3) None (596, 596, 3) None (411, 411, 3) None (492, 492, 3) None (401, 401, 3) None (156, 156, 3) None (173, 173, 3) None (944, 944, 3) None (115, 115, 3) None (68, 68, 3) None (130, 130, 3) None (81, 81, 3) None (189, 189, 3) None (142, 142, 3) None (159, 159, 3) None (109, 109, 3) None (156, 156, 3) None (176, 176, 3) None (154, 154, 3) None (102, 102, 3) None (140, 140, 3) None (63, 63, 3) None (104, 104, 3) None (597, 597, 3) None (134, 134, 3) None (233, 233, 3) None (629, 629, 3) None (100, 100, 3) None (286, 286, 3) None (141, 141, 3) None (476, 476, 3) None (76, 76, 3) None (150, 150, 3) None (117, 117, 3) None (130, 130, 3) None (777, 777, 3) None (758, 758, 3) None (87, 87, 3) None (207, 207, 3) None (397, 397, 3) None (88, 88, 3) None (97, 97, 3) None (129, 129, 3) None (105, 105, 3) None (430, 430, 3) None (85, 85, 3) None (435, 435, 3) None (181, 181, 3) None (125, 125, 3) None (139, 139, 3) None (125, 125, 3) None (191, 191, 3) None (117, 117, 3) None (299, 299, 3) None (118, 118, 3) None (220, 220, 3) None (746, 746, 3) None (74, 74, 3) None (152, 152, 3) None (135, 135, 3) None (662, 662, 3) None (128, 128, 3) None (366, 366, 3) None (135, 135, 3) None (114, 114, 3) None (110, 110, 3) None (418, 418, 3) None (143, 143, 3) None (383, 383, 3) None (166, 166, 3) None (155, 155, 3) None (131, 131, 3) None (716, 716, 3) None (168, 168, 3) None (1317, 1317, 3) None (1238, 1238, 3) None (133, 133, 3) None (364, 364, 3) None (111, 111, 3) None (603, 603, 3) None (426, 426, 3) None (76, 76, 3) None (261, 261, 3) None (484, 484, 3) None (111, 111, 3) None (476, 476, 3) None (490, 490, 3) None (266, 266, 3) None (372, 372, 3) None (119, 119, 3) None (173, 173, 3) None (149, 149, 3) None (98, 98, 3) None (367, 367, 3) None (157, 157, 3) None (544, 544, 3) None (224, 224, 3) None (119, 119, 3) None (114, 114, 3) None (486, 486, 3) None (133, 133, 3) None (107, 107, 3) None (328, 328, 3) None (149, 149, 3) None (350, 350, 3) None (272, 272, 3) None (764, 764, 3) None (140, 140, 3) None (174, 174, 3) None (392, 392, 3) None (135, 135, 3) None (291, 291, 3) None (218, 218, 3) None (62, 62, 3) None (353, 353, 3) None (148, 148, 3) None (188, 188, 3) None (626, 626, 3) None (436, 436, 3) None (416, 416, 3) None (117, 117, 3) None (602, 602, 3) None (167, 167, 3) None (319, 319, 3) None (248, 248, 3) None (163, 163, 3) None (498, 498, 3) None (497, 497, 3) None (389, 389, 3) None (224, 224, 3) None (733, 733, 3) None (254, 254, 3) None (366, 366, 3) None (306, 306, 3) None (133, 133, 3) None (153, 153, 3) None (467, 467, 3) None (208, 208, 3) None (531, 531, 3) None (152, 152, 3) None (725, 725, 3) None (590, 590, 3) None (357, 357, 3) None (237, 237, 3) None (442, 442, 3) None (205, 205, 3) None (169, 169, 3) None (255, 255, 3) None (240, 240, 3) None (165, 165, 3) None (702, 702, 3) None (694, 694, 3) None (511, 511, 3) None (232, 232, 3) None (272, 272, 3) None (183, 183, 3) None (503, 503, 3) None (296, 296, 3) None (713, 713, 3) None (380, 380, 3) None (676, 676, 3) None (384, 384, 3) None (168, 168, 3) None (370, 370, 3) None (322, 322, 3) None (233, 233, 3) None (558, 558, 3) None (367, 367, 3) None (138, 138, 3) None (131, 131, 3) None (487, 487, 3) None (80, 80, 3) None (479, 479, 3) None (196, 196, 3) None (645, 645, 3) None (472, 472, 3) None (435, 435, 3) None (530, 530, 3) None (210, 210, 3) None (340, 340, 3) None (262, 262, 3) None (278, 278, 3) None (202, 202, 3) None (120, 120, 3) None (730, 730, 3) None (179, 179, 3) None (285, 285, 3) None (453, 453, 3) None (233, 233, 3) None (694, 694, 3) None (130, 130, 3) None (550, 550, 3) None (492, 492, 3) None (628, 628, 3) None (825, 825, 3) None (150, 150, 3) None (652, 652, 3) None (235, 235, 3) None (474, 474, 3) None (124, 124, 3) None (145, 145, 3) None (760, 760, 3) None (399, 399, 3) None (150, 150, 3) None (140, 140, 3) None (236, 236, 3) None (323, 323, 3) None (306, 306, 3) None (282, 282, 3) None (123, 123, 3) None (296, 296, 3) None (226, 226, 3) None (416, 416, 3) None (152, 152, 3) None (959, 959, 3) None (145, 145, 3) None (116, 116, 3) None (848, 848, 3) None (646, 646, 3) None (372, 372, 3) None (161, 161, 3) None (130, 130, 3) None (157, 157, 3) None (781, 781, 3) None (683, 683, 3) None (207, 207, 3) None (159, 159, 3) None (150, 150, 3) None (459, 459, 3) None (213, 213, 3) None (95, 95, 3) None (173, 173, 3) None (863, 863, 3) None (212, 212, 3) None (138, 138, 3) None (211, 211, 3) None (117, 117, 3) None (670, 670, 3) None (318, 318, 3) None (789, 789, 3) None (187, 187, 3) None (411, 411, 3) None (395, 395, 3) None (138, 138, 3) None (730, 730, 3) None (156, 156, 3) None (625, 625, 3) None (395, 395, 3) None (201, 201, 3) None (360, 360, 3) None (155, 155, 3) None (173, 173, 3) None (622, 622, 3) None (137, 137, 3) None (137, 137, 3) None (551, 551, 3) None (239, 239, 3) None (365, 365, 3) None (209, 209, 3) None (486, 486, 3) None (146, 146, 3) None (166, 166, 3) None (163, 163, 3) None (253, 253, 3) None (227, 227, 3) None (241, 241, 3) None (213, 213, 3) None (165, 165, 3) None (370, 370, 3) None (420, 420, 3) None (613, 613, 3) None (197, 197, 3) None (280, 280, 3) None (227, 227, 3) None (162, 162, 3) None (500, 500, 3) None (577, 577, 3) None (142, 142, 3) None (534, 534, 3) None (143, 143, 3) None (467, 467, 3) None (400, 400, 3) None (236, 236, 3) None (723, 723, 3) None (220, 220, 3) None (210, 210, 3) None (246, 246, 3) None (862, 862, 3) None (226, 226, 3) None (460, 460, 3) None (265, 265, 3) None (143, 143, 3) None (165, 165, 3) None (152, 152, 3) None (179, 179, 3) None (156, 156, 3) None (544, 544, 3) None (224, 224, 3) None (363, 363, 3) None (147, 147, 3) None (209, 209, 3) None (608, 608, 3) None (314, 314, 3) None (698, 698, 3) None (357, 357, 3) None (412, 412, 3) None (293, 293, 3) None (157, 157, 3) None (135, 135, 3) None (193, 193, 3) None (113, 113, 3) None (237, 237, 3) None (536, 536, 3) None (552, 552, 3) None (433, 433, 3) None (218, 218, 3) None (224, 224, 3) None (314, 314, 3) None (612, 612, 3) None (157, 157, 3) None (435, 435, 3) None (276, 276, 3) None (198, 198, 3) None (561, 561, 3) None (122, 122, 3) None (539, 539, 3) None (379, 379, 3) None (332, 332, 3) None (189, 189, 3) None (132, 132, 3) None (417, 417, 3) None (344, 344, 3) None (385, 385, 3) None (180, 180, 3) None (631, 631, 3) None (436, 436, 3) None (389, 389, 3) None (164, 164, 3) None (312, 312, 3) None (718, 718, 3) None (151, 151, 3) None (344, 344, 3) None (199, 199, 3) None (392, 392, 3) None (495, 495, 3) None (376, 376, 3) None (485, 485, 3) None (236, 236, 3) None (324, 324, 3) None (303, 303, 3) None (767, 767, 3) None (245, 245, 3) None (463, 463, 3) None (236, 236, 3) None (399, 399, 3) None (257, 257, 3) None (209, 209, 3) None (575, 575, 3) None (369, 369, 3) None (498, 498, 3) None (209, 209, 3) None (742, 742, 3) None (399, 399, 3) None (429, 429, 3) None (198, 198, 3) None (444, 444, 3) None (510, 510, 3) None (816, 816, 3) None (162, 162, 3) None (191, 191, 3) None (334, 334, 3) None (291, 291, 3) None (465, 465, 3) None (139, 139, 3) None (457, 457, 3) None (116, 116, 3) None (218, 218, 3) None (319, 319, 3) None (623, 623, 3) None (172, 172, 3) None (186, 186, 3) None (394, 394, 3) None (584, 584, 3) None (151, 151, 3) None (489, 489, 3) None (164, 164, 3) None (287, 287, 3) None (296, 296, 3) None (431, 431, 3) None (144, 144, 3) None (113, 113, 3) None (148, 148, 3) None (199, 199, 3) None (155, 155, 3) None (94, 94, 3) None (444, 444, 3) None (365, 365, 3) None (586, 586, 3) None (209, 209, 3) None (373, 373, 3) None (328, 328, 3) None (217, 217, 3) None (338, 338, 3) None (576, 576, 3) None (650, 650, 3) None (278, 278, 3) None (673, 673, 3) None (428, 428, 3) None (226, 226, 3) None (239, 239, 3) None (169, 169, 3) None (263, 263, 3) None (310, 310, 3) None (618, 618, 3) None (490, 490, 3) None (464, 464, 3) None (143, 143, 3) None (165, 165, 3) None (653, 653, 3) None (162, 162, 3) None (191, 191, 3) None (226, 226, 3) None (610, 610, 3) None (636, 636, 3) None (481, 481, 3) None (377, 377, 3) None (272, 272, 3) None (141, 141, 3) None (134, 134, 3) None (578, 578, 3) None (336, 336, 3) None (209, 209, 3) None (750, 750, 3) None (100, 100, 3) None (152, 152, 3) None (162, 162, 3) None (741, 741, 3) None (647, 647, 3) None (586, 586, 3) None (420, 420, 3) None (729, 729, 3) None (271, 271, 3) None (659, 659, 3) None (376, 376, 3) None (234, 234, 3) None (471, 471, 3) None (424, 424, 3) None (150, 150, 3) None (608, 608, 3) None (174, 174, 3) None (595, 595, 3) None (222, 222, 3) None (247, 247, 3) None (402, 402, 3) None (115, 115, 3) None (283, 283, 3) None (173, 173, 3) None (165, 165, 3) None (434, 434, 3) None (400, 400, 3) None (111, 111, 3) None (639, 639, 3) None (552, 552, 3) None (225, 225, 3) None (374, 374, 3) None (150, 150, 3) None (275, 275, 3) None (145, 145, 3) None (273, 273, 3) None (198, 198, 3) None (377, 377, 3) None (434, 434, 3) None (119, 119, 3) None (376, 376, 3) None (157, 157, 3) None (157, 157, 3) None (289, 289, 3) None (154, 154, 3) None (666, 666, 3) None (182, 182, 3) None (748, 748, 3) None (1006, 1006, 3) None (343, 343, 3) None (493, 493, 3) None (201, 201, 3) None (359, 359, 3) None (241, 241, 3) None (152, 152, 3) None (406, 406, 3) None (125, 125, 3) None (250, 250, 3) None (309, 309, 3) None (183, 183, 3) None (271, 271, 3) None (418, 418, 3) None (274, 274, 3) None (242, 242, 3) None (298, 298, 3) None (358, 358, 3) None (513, 513, 3) None (158, 158, 3) None (416, 416, 3) None (372, 372, 3) None (132, 132, 3) None (368, 368, 3) None (178, 178, 3) None (450, 450, 3) None (186, 186, 3) None (153, 153, 3) None (458, 458, 3) None (141, 141, 3) None (177, 177, 3) None (171, 171, 3) None (209, 209, 3) None (711, 711, 3) None (291, 291, 3) None (383, 383, 3) None (139, 139, 3) None (109, 109, 3) None (679, 679, 3) None (292, 292, 3) None (256, 256, 3) None (398, 398, 3) None (239, 239, 3) None (211, 211, 3) None (248, 248, 3) None (634, 634, 3) None (435, 435, 3) None (307, 307, 3) None (237, 237, 3) None (248, 248, 3) None (614, 614, 3) None (385, 385, 3) None (142, 142, 3) None (632, 632, 3) None (493, 493, 3) None (229, 229, 3) None (251, 251, 3) None (100, 100, 3) None (152, 152, 3) None (259, 259, 3) None (231, 231, 3) None (167, 167, 3) None (170, 170, 3) None (781, 781, 3) None (656, 656, 3) None (170, 170, 3) None (114, 114, 3) None (845, 845, 3) None (166, 166, 3) None (137, 137, 3) None (167, 167, 3) None (126, 126, 3) None (625, 625, 3) None (799, 799, 3) None (284, 284, 3) None (470, 470, 3) None (400, 400, 3) None (465, 465, 3) None (399, 399, 3) None (292, 292, 3) None (681, 681, 3) None (323, 323, 3) None (159, 159, 3) None (249, 249, 3) None (253, 253, 3) None (238, 238, 3) None (151, 151, 3) None (651, 651, 3) None (119, 119, 3) None (162, 162, 3) None (245, 245, 3) None (732, 732, 3) None (453, 453, 3) None (519, 519, 3) None (435, 435, 3) None (811, 811, 3) None (312, 312, 3) None (458, 458, 3) None (382, 382, 3) None (156, 156, 3) None (219, 219, 3) None (531, 531, 3) None (151, 151, 3) None (216, 216, 3) None (270, 270, 3) None (307, 307, 3) None (150, 150, 3) None (262, 262, 3) None (677, 677, 3) None (308, 308, 3) None (792, 792, 3) None (270, 270, 3) None (151, 151, 3) None (132, 132, 3) None (303, 303, 3) None (124, 124, 3) None (401, 401, 3) None (143, 143, 3) None (387, 387, 3) None (756, 756, 3) None (510, 510, 3) None (481, 481, 3) None (560, 560, 3) None (386, 386, 3) None (161, 161, 3) None (84, 84, 3) None (483, 483, 3) None (1041, 1041, 3) None (1023, 1023, 3) None (716, 716, 3) None (479, 479, 3) None (377, 377, 3) None (395, 395, 3) None (1205, 1205, 3) None (759, 759, 3) None (303, 303, 3) None (370, 370, 3) None (449, 449, 3) None (1050, 1050, 3) None (569, 569, 3) None (511, 511, 3) None (731, 731, 3) None (1241, 1241, 3) None (900, 900, 3) None (546, 546, 3) None (49, 49, 3) None (1332, 1332, 3) None (471, 471, 3) None (284, 284, 3) None (552, 552, 3) None (475, 475, 3) None (1525, 1525, 3) None (456, 456, 3) None (663, 663, 3) None (482, 482, 3) None (1007, 1007, 3) None (297, 297, 3) None (749, 749, 3) None (154, 154, 3) None (567, 567, 3) None (988, 988, 3) None (546, 546, 3) None (153, 153, 3) None (626, 626, 3) None (893, 893, 3) None (602, 602, 3) None (191, 191, 3) None (583, 583, 3) None (1207, 1207, 3) None (648, 648, 3) None (1715, 1715, 3) None (503, 503, 3) None (297, 297, 3) None (612, 612, 3) None (311, 311, 3) None (504, 504, 3) None (162, 162, 3) None (215, 215, 3) None (628, 628, 3) None (577, 577, 3) None (1091, 1091, 3) None (545, 545, 3) None (468, 468, 3) None (675, 675, 3) None (582, 582, 3) None (307, 307, 3) None (684, 684, 3) None (201, 201, 3) None (620, 620, 3) None (359, 359, 3) None (464, 464, 3) None (562, 562, 3) None (427, 427, 3) None (341, 341, 3) None (165, 165, 3) None (387, 387, 3) None (496, 496, 3) None (595, 595, 3) None (593, 593, 3) None (762, 762, 3) None (114, 114, 3) None (656, 656, 3) None (465, 465, 3) None (1089, 1134, 3) None (476, 476, 3) None (103, 103, 3) None (174, 174, 3) None (267, 267, 3) None (552, 552, 3) None (612, 612, 3) None (1228, 1228, 3) None (925, 925, 3) None (481, 481, 3) None (551, 551, 3) None (169, 169, 3) None (736, 736, 3) None (1546, 1546, 3) None (528, 528, 3) None (1195, 1195, 3) None (400, 400, 3) None (419, 419, 3) None (717, 717, 3) None (905, 905, 3) None (339, 339, 3) None (577, 577, 3) None (844, 844, 3) None (629, 629, 3) None (1434, 1434, 3) None (579, 579, 3) None (469, 469, 3) None (869, 869, 3) None (488, 488, 3) None (369, 369, 3) None (920, 920, 3) None (1114, 1114, 3) None (155, 155, 3) None (328, 328, 3) None (887, 937, 3) None (596, 596, 3) None (416, 416, 3) None (293, 293, 3) None (228, 228, 3) None (399, 399, 3) None (179, 179, 3) None (383, 383, 3) None (645, 645, 3) None (1088, 1088, 3) None (631, 631, 3) None (549, 549, 3) None (586, 586, 3) None (569, 569, 3) None (367, 367, 3) None (195, 195, 3) None (915, 915, 3) None (633, 633, 3) None (304, 304, 3) None (836, 836, 3) None (286, 286, 3) None (286, 286, 3) None (720, 720, 3) None (697, 697, 3) None (580, 580, 3) None (374, 374, 3) None (766, 766, 3) None (196, 196, 3) None (720, 720, 3) None (598, 598, 3) None (652, 652, 3) None (474, 474, 3) None (720, 720, 3) None (129, 129, 3) None (169, 169, 3) None (721, 721, 3) None (1240, 1240, 3) None (613, 613, 3) None (435, 435, 3) None (277, 277, 3) None (719, 719, 3) None (448, 448, 3) None (148, 148, 3) None (843, 843, 3) None (602, 602, 3) None (523, 523, 3) None (923, 923, 3) None (514, 514, 3) None (634, 634, 3) None (1217, 1217, 3) None (820, 820, 3) None (458, 458, 3) None (86, 86, 3) None (392, 392, 3) None (492, 492, 3) None (768, 768, 3) None (581, 581, 3) None (703, 703, 3) None (775, 775, 3) None (634, 634, 3) None (611, 611, 3) None (716, 716, 3) None (660, 660, 3) None (479, 479, 3) None (155, 155, 3) None (937, 999, 3) None (680, 680, 3) None (1061, 1061, 3) None (164, 164, 3) None (96, 96, 3) None (1289, 1289, 3) None (612, 612, 3) None (1609, 1609, 3) None (306, 306, 3) None (367, 367, 3) None (1444, 1444, 3) None (639, 639, 3) None (101, 101, 3) None (1036, 1036, 3) None (183, 183, 3) None (574, 574, 3) None (418, 418, 3) None (643, 643, 3) None (64, 64, 3) None (399, 399, 3) None (1355, 1355, 3) None (503, 503, 3) None (557, 557, 3) None (975, 975, 3) None (115, 115, 3) None (361, 361, 3) None (618, 618, 3) None (1185, 1185, 3) None (1197, 1197, 3) None (744, 744, 3) None (742, 742, 3) None (168, 168, 3) None (402, 402, 3) None (177, 177, 3) None (633, 633, 3) None (373, 373, 3) None (597, 597, 3) None (491, 491, 3) None (453, 453, 3) None (923, 923, 3) None (420, 420, 3) None (1023, 1023, 3) None (183, 183, 3) None (423, 423, 3) None (182, 182, 3) None (463, 463, 3) None (1208, 1208, 3) None (573, 573, 3) None (333, 333, 3) None (117, 117, 3) None (564, 564, 3) None (1104, 1104, 3) None (1414, 1414, 3) None (60, 60, 3) None (470, 470, 3) None (470, 470, 3) None (1543, 1543, 3) None (845, 845, 3) None (152, 152, 3) None (1114, 1114, 3) None (825, 825, 3) None (444, 444, 3) None (443, 443, 3) None (576, 576, 3) None (516, 516, 3) None (165, 165, 3) None (524, 524, 3) None (438, 438, 3) None (545, 545, 3) None (513, 513, 3) None (632, 632, 3) None (1197, 1197, 3) None (1085, 1085, 3) None (90, 90, 3) None (962, 962, 3) None (197, 197, 3) None (164, 164, 3) None (492, 492, 3) None (146, 146, 3) None (1026, 1026, 3) None (181, 181, 3) None (303, 303, 3) None (588, 588, 3) None (89, 89, 3) None (944, 944, 3) None (1250, 1250, 3) None (671, 671, 3) None (779, 779, 3) None (482, 482, 3) None (651, 651, 3) None (285, 285, 3) None (155, 155, 3) None (82, 82, 3) None (626, 626, 3) None (98, 98, 3) None (150, 150, 3) None (519, 519, 3) None (928, 928, 3) None (141, 141, 3) None (134, 134, 3) None (674, 674, 3) None (495, 495, 3) None (314, 314, 3) None (80, 80, 3) None (324, 324, 3) None (174, 174, 3) None (632, 632, 3) None (118, 118, 3) None (1440, 1440, 3) None (1380, 1380, 3) None (412, 412, 3) None (475, 475, 3) None (493, 493, 3) None (167, 167, 3) None (407, 407, 3) None (528, 528, 3) None (583, 583, 3) None (519, 519, 3) None (1433, 1433, 3) None (877, 877, 3) None (960, 960, 3) None (183, 183, 3) None (885, 885, 3) None (468, 468, 3) None (649, 649, 3) None (626, 626, 3) None (606, 606, 3) None (208, 208, 3) None (408, 408, 3) None (592, 592, 3) None (651, 651, 3) None (752, 752, 3) None (973, 973, 3) None (493, 493, 3) None (698, 698, 3) None (521, 521, 3) None (644, 644, 3) None (955, 955, 3) None (769, 769, 3) None (816, 816, 3) None (169, 169, 3) None (536, 536, 3) None (1412, 1413, 3) None (150, 150, 3) None (142, 142, 3) None (89, 89, 3) None (682, 682, 3) None (531, 531, 3) None (371, 371, 3) None (1331, 1331, 3) None (624, 624, 3) None (592, 592, 3) None (488, 488, 3) None (522, 522, 3) None (163, 163, 3) None (727, 727, 3) None (615, 615, 3) None (533, 533, 3) None (774, 774, 3) None (468, 468, 3) None (452, 452, 3) None (481, 481, 3) None (499, 499, 3) None (538, 538, 3) None (306, 306, 3) None (592, 592, 3) None (446, 446, 3) None (797, 797, 3) None (834, 834, 3) None (1320, 1476, 3) None (1036, 1036, 3) None (1174, 1310, 3) None (130, 130, 3) None (553, 553, 3) None (531, 531, 3) None (745, 745, 3) None (598, 598, 3) None (662, 662, 3) None (1064, 1064, 3) None (1004, 1004, 3) None (432, 432, 3) None (1045, 1045, 3) None (267, 267, 3) None (621, 621, 3) None (982, 982, 3) None (498, 498, 3) None (566, 566, 3) None (589, 589, 3) None (264, 264, 3) None (140, 140, 3) None (415, 415, 3) None (686, 686, 3) None (929, 929, 3) None (902, 902, 3) None (1286, 1286, 3) None (341, 341, 3) None (602, 602, 3) None (548, 548, 3) None (182, 182, 3) None (431, 431, 3) None (1005, 1005, 3) None (478, 478, 3) None
# The images have a different shape. Hence they need to be unified for modelling.
X_new = []
for img in image_files:
# Read and resize image
full_size_image = cv2.imread(img)
X_new.append(cv2.resize(full_size_image, (128,128), interpolation=cv2.INTER_CUBIC))
# Display shape of variable X
for i in range(1,len(X_new)):
print(print(X_new[i].shape))
(128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None (128, 128, 3) None
plt.imshow(X_new[20]);
# Convert list to array
X_new = np.asarray(X_new)
# Perform Normalization
X_new = X_new / 255
print('Data Shape after Normalising', X_new.shape, y_NN.shape)
plt.imshow(X_new[20]);
Data Shape after Normalising (4750, 128, 128, 3) (4750, 12)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_new, y_NN, test_size=0.2, random_state=42, stratify=y)
print(f"Shapes of Train & Test sets are: {X_train.shape},{X_test.shape}")
print(f"Shapes of Train & Test sets of Target are: {y_train.shape},{y_test.shape}")
Shapes of Train & Test sets are: (3800, 128, 128, 3),(950, 128, 128, 3) Shapes of Train & Test sets of Target are: (3800, 12),(950, 12)
### define model
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import backend
backend.clear_session()
#Fixing the seed for random number generators so that we can ensure we receive the same output everytime
np.random.seed(42)
import random
random.seed(42)
tf.random.set_seed(42)
# Initialising the CNN classifier
classifier_1 = Sequential()
# Add a Convolution layer with 32 kernels of 3X3 shape with activation function ReLU
classifier_1.add(Conv2D(32, (3, 3), input_shape = (128, 128, 3), activation = 'relu', padding = 'same'))
# Add a Max Pooling layer of size 2X2
classifier_1.add(MaxPooling2D(pool_size = (2, 2)))
# Add another Convolution layer with 32 kernels of 3X3 shape with activation function ReLU
classifier_1.add(Conv2D(64, (3, 3), activation = 'relu', padding = 'same'))
# Adding another pooling layer
classifier_1.add(MaxPooling2D(pool_size = (2, 2)))
# Add another Convolution layer with 32 kernels of 3X3 shape with activation function ReLU
classifier_1.add(Conv2D(128, (3, 3), activation = 'relu', padding = 'same'))
# Adding another pooling layer
classifier_1.add(MaxPooling2D(pool_size = (2, 2)))
# Flattening the layer before fully connected layers
classifier_1.add(Flatten())
# Adding a fully connected layer with 512 neurons
classifier_1.add(Dense(units = 512, activation = 'relu'))
# Adding dropout with probability 0.4
classifier_1.add(Dropout(0.4))
# Adding a fully connected layer with 128 neurons
classifier_1.add(Dense(units = 128, activation = 'relu'))
# The final output layer with 5 neuron to predict the categorical classifcation
classifier_1.add(Dense(units = 12, activation = 'softmax'))
classifier_1.summary()
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 128, 128, 32) 896 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 64, 64, 32) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 64, 64, 64) 18496 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 32, 32, 64) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 32, 32, 128) 73856 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 16, 16, 128) 0 _________________________________________________________________ flatten (Flatten) (None, 32768) 0 _________________________________________________________________ dense (Dense) (None, 512) 16777728 _________________________________________________________________ dropout (Dropout) (None, 512) 0 _________________________________________________________________ dense_1 (Dense) (None, 128) 65664 _________________________________________________________________ dense_2 (Dense) (None, 12) 1548 ================================================================= Total params: 16,938,188 Trainable params: 16,938,188 Non-trainable params: 0 _________________________________________________________________
# Compile model
classifier_1.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
import time
start_time = time.time()
# Fit the model
histroy = classifier_1.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=25, batch_size=8, verbose=1)
print("****** %s seconds" % (time.time() - start_time))
Epoch 1/25 475/475 [==============================] - 91s 191ms/step - loss: 2.1689 - accuracy: 0.2484 - val_loss: 1.5670 - val_accuracy: 0.4789 Epoch 2/25 475/475 [==============================] - 90s 189ms/step - loss: 1.4575 - accuracy: 0.4929 - val_loss: 1.1884 - val_accuracy: 0.5989 Epoch 3/25 475/475 [==============================] - 92s 193ms/step - loss: 1.0665 - accuracy: 0.6305 - val_loss: 0.8910 - val_accuracy: 0.6937 Epoch 4/25 475/475 [==============================] - 91s 191ms/step - loss: 0.7739 - accuracy: 0.7268 - val_loss: 0.8282 - val_accuracy: 0.7242 Epoch 5/25 475/475 [==============================] - 89s 188ms/step - loss: 0.6031 - accuracy: 0.7882 - val_loss: 0.7493 - val_accuracy: 0.7558 Epoch 6/25 475/475 [==============================] - 87s 183ms/step - loss: 0.4752 - accuracy: 0.8232 - val_loss: 0.7454 - val_accuracy: 0.7663 Epoch 7/25 475/475 [==============================] - 84s 177ms/step - loss: 0.3829 - accuracy: 0.8666 - val_loss: 0.8405 - val_accuracy: 0.7379 Epoch 8/25 475/475 [==============================] - 84s 176ms/step - loss: 0.3119 - accuracy: 0.8837 - val_loss: 0.8874 - val_accuracy: 0.7453 Epoch 9/25 475/475 [==============================] - 86s 181ms/step - loss: 0.2760 - accuracy: 0.8976 - val_loss: 0.8784 - val_accuracy: 0.7505 Epoch 10/25 475/475 [==============================] - 84s 176ms/step - loss: 0.2222 - accuracy: 0.9213 - val_loss: 0.8648 - val_accuracy: 0.7705 Epoch 11/25 475/475 [==============================] - 90s 189ms/step - loss: 0.1958 - accuracy: 0.9361 - val_loss: 1.0536 - val_accuracy: 0.7505 Epoch 12/25 475/475 [==============================] - 89s 187ms/step - loss: 0.1622 - accuracy: 0.9484 - val_loss: 1.1093 - val_accuracy: 0.7432 Epoch 13/25 475/475 [==============================] - 87s 183ms/step - loss: 0.1420 - accuracy: 0.9547 - val_loss: 1.1778 - val_accuracy: 0.7389 Epoch 14/25 475/475 [==============================] - 3851s 8s/step - loss: 0.1437 - accuracy: 0.9521 - val_loss: 1.0546 - val_accuracy: 0.7463 Epoch 15/25 475/475 [==============================] - 89s 187ms/step - loss: 0.1064 - accuracy: 0.9658 - val_loss: 1.1444 - val_accuracy: 0.7568 Epoch 16/25 475/475 [==============================] - 92s 193ms/step - loss: 0.0995 - accuracy: 0.9705 - val_loss: 1.3789 - val_accuracy: 0.7495 Epoch 17/25 475/475 [==============================] - 89s 187ms/step - loss: 0.1179 - accuracy: 0.9626 - val_loss: 1.4056 - val_accuracy: 0.7674 Epoch 18/25 475/475 [==============================] - 85s 179ms/step - loss: 0.1119 - accuracy: 0.9655 - val_loss: 1.2351 - val_accuracy: 0.7695 Epoch 19/25 475/475 [==============================] - 89s 187ms/step - loss: 0.0808 - accuracy: 0.9750 - val_loss: 1.3546 - val_accuracy: 0.7442 Epoch 20/25 475/475 [==============================] - 93s 195ms/step - loss: 0.0933 - accuracy: 0.9729 - val_loss: 1.4935 - val_accuracy: 0.7400 Epoch 21/25 475/475 [==============================] - 92s 194ms/step - loss: 0.0770 - accuracy: 0.9755 - val_loss: 1.4455 - val_accuracy: 0.7547 Epoch 22/25 475/475 [==============================] - 90s 189ms/step - loss: 0.0650 - accuracy: 0.9803 - val_loss: 1.6244 - val_accuracy: 0.7411 Epoch 23/25 475/475 [==============================] - 85s 180ms/step - loss: 0.0639 - accuracy: 0.9808 - val_loss: 1.4292 - val_accuracy: 0.7537 Epoch 24/25 475/475 [==============================] - 91s 191ms/step - loss: 0.0902 - accuracy: 0.9713 - val_loss: 1.2925 - val_accuracy: 0.7600 Epoch 25/25 475/475 [==============================] - 91s 191ms/step - loss: 0.0589 - accuracy: 0.9803 - val_loss: 1.4339 - val_accuracy: 0.7695 ****** 5984.233310222626 seconds
## Accuracy and Loss plots
accuracy = histroy.history['accuracy']
val_accuracy = histroy.history['val_accuracy']
loss = histroy.history['loss']
val_loss = histroy.history['val_loss']
epochs = range(len(accuracy)) # Get number of epochs
plt.plot (epochs, accuracy, label = 'training accuracy')
plt.plot (epochs, val_accuracy, label = 'validation accuracy')
plt.title ('Training and validation accuracy')
plt.legend(loc = 'lower right')
plt.figure()
plt.plot (epochs, loss, label = 'training loss')
plt.plot (epochs, val_loss, label = 'validation loss')
plt.legend(loc = 'upper right')
plt.title ('Training and validation loss')
Text(0.5, 1.0, 'Training and validation loss')
cnn_loss, cnn_accuracy = classifier_1.evaluate(X_test, y_test, verbose=1)
print('Test loss:', cnn_loss)
print('Test accuracy:', cnn_accuracy)
30/30 [==============================] - 4s 129ms/step - loss: 1.4339 - accuracy: 0.7695 Test loss: 1.4339468479156494 Test accuracy: 0.769473671913147
# Predicting and vizualizing the test image
import matplotlib.pyplot as plt
%matplotlib inline
temp = df.sample(1)
print('labels:', labels)
plt.title(temp.iloc[0,1])
plt.imshow(temp.iloc[0,2])
test_image = cv2.resize(temp.iloc[0,2],(128,128))
test_image = np.expand_dims(test_image, axis = 0)
test_image =test_image*1/255
y_pred = classifier_1.predict(test_image)
print("Softmax Outputs:", y_pred)
print("Sum of Softmax Results:",y_pred.sum())
# Convert the predicted probabilities to labels
for i in y_pred:
for j, k in enumerate(i):
if k == y_pred.max():
print('\n')
print('Predicted_Label:', labels[j])
print('Actual Label:',temp.iloc[0,1])
print('\n')
plt.show()
labels: ['Black-grass', 'Charlock', 'Cleavers', 'Common Chickweed', 'Common wheat', 'Fat Hen', 'Loose Silky-bent', 'Maize', 'Scentless Mayweed', 'Shepherds Purse', 'Small-flowered Cranesbill', 'Sugar beet'] Softmax Outputs: [[5.9259557e-14 2.7581280e-05 6.5747705e-09 3.6018871e-05 3.3423861e-11 9.1487857e-09 4.7356375e-17 1.2936365e-06 3.8220758e-05 9.9989581e-01 1.1143351e-06 2.2504966e-10]] Sum of Softmax Results: 1.0 Predicted_Label: Shepherds Purse Actual Label: Shepherds Purse
# Predicting and vizualizing the test image
import matplotlib.pyplot as plt
%matplotlib inline
n = 20
temp = pd.DataFrame(df.iloc[n]).T
print('labels:', labels)
plt.title(temp.iloc[0,1])
plt.imshow(temp.iloc[0,2])
test_image = cv2.resize(temp.iloc[0,2],(128,128))
test_image = np.expand_dims(test_image, axis = 0)
test_image =test_image*1/255
y_pred = classifier_1.predict(test_image)
print("Softmax Outputs:", y_pred)
print("Sum of Softmax Results:",y_pred.sum())
# Convert the predicted probabilities to labels
for i in y_pred:
for j, k in enumerate(i):
if k == y_pred.max():
print('\n')
print('Predicted_Label:', labels[j])
print('Actual Label:',temp.iloc[0,1])
print('\n')
plt.show()
labels: ['Black-grass', 'Charlock', 'Cleavers', 'Common Chickweed', 'Common wheat', 'Fat Hen', 'Loose Silky-bent', 'Maize', 'Scentless Mayweed', 'Shepherds Purse', 'Small-flowered Cranesbill', 'Sugar beet'] Softmax Outputs: [[2.1085664e-06 5.1852078e-09 6.7717410e-06 3.7482905e-06 4.3847686e-07 9.7316537e-05 9.9222320e-01 5.8474096e-05 7.0226123e-03 1.5608652e-10 5.1121122e-05 5.3423812e-04]] Sum of Softmax Results: 1.0000001 Predicted_Label: Loose Silky-bent Actual Label: Black-grass
# Predicting and vizualizing the test image
import matplotlib.pyplot as plt
%matplotlib inline
n = 200
temp = pd.DataFrame(df.iloc[n]).T
print('labels:', labels)
plt.title(temp.iloc[0,1])
plt.imshow(temp.iloc[0,2])
test_image = cv2.resize(temp.iloc[0,2],(128,128))
test_image = np.expand_dims(test_image, axis = 0)
test_image =test_image*1/255
y_pred = classifier_1.predict(test_image)
print("Softmax Outputs:", y_pred)
print("Sum of Softmax Results:",y_pred.sum())
# Convert the predicted probabilities to labels
for i in y_pred:
for j, k in enumerate(i):
if k == y_pred.max():
print('\n')
print('Predicted_Label:', labels[j])
print('Actual Label:',temp.iloc[0,1])
print('\n')
plt.show()
labels: ['Black-grass', 'Charlock', 'Cleavers', 'Common Chickweed', 'Common wheat', 'Fat Hen', 'Loose Silky-bent', 'Maize', 'Scentless Mayweed', 'Shepherds Purse', 'Small-flowered Cranesbill', 'Sugar beet'] Softmax Outputs: [[9.9998915e-01 2.8693866e-12 2.7970336e-11 4.3323439e-08 3.2054838e-06 1.2800674e-11 7.5611410e-06 1.2589113e-09 1.2334726e-08 1.9371796e-14 1.0634998e-09 1.2414995e-07]] Sum of Softmax Results: 1.0000001 Predicted_Label: Black-grass Actual Label: Black-grass
• DOMAIN: Botanical Research
• CONTEXT: University X is currently undergoing some research involving understanding the characteristics of flowers. They already have have invested on curating sample images. They require an automation which can create a classifier capable of determining a flower’s species from a photo.
• DATA DESCRIPTION: The dataset comprises of images from 17 plant species.
• PROJECT OBJECTIVE: To experiment with various approaches to train an image classifier to predict type of flower from the image.
import tflearn.datasets.oxflower17 as oxflower17
WARNING:tensorflow:From C:\Users\laksh\anaconda3\lib\site-packages\tensorflow\python\compat\v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version. Instructions for updating: non-resource variables are not supported in the long term curses is not supported on this machine (please install/reinstall curses for an optimal experience)
x, y = oxflower17.load_data()
print("The Total number of Images in x is", len(x), "and in y is", len(y))
The Total number of Images in x is 1360 and in y is 1360
print("The Shape of the Image is", x.shape[1:])
The Shape of the Image is (224, 224, 3)
There are 1360 images in the dataset.
Shape of the images are given above.
Each image is 224x224 with 3 channels.
import numpy as np
no_class = np.unique(y)
print("List of classes:" , no_class)
print("Total Number of classes:" ,len(no_class))
class_cnt = np.bincount(y)
print("Count of Each Classes:",class_cnt)
# dictionary of lists
dict = {'List of classes': no_class, 'Count of Each Classes': class_cnt}
df_count = pd.DataFrame(dict)
df_count
List of classes: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] Total Number of classes: 17 Count of Each Classes: [80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80]
| List of classes | Count of Each Classes | |
|---|---|---|
| 0 | 0 | 80 |
| 1 | 1 | 80 |
| 2 | 2 | 80 |
| 3 | 3 | 80 |
| 4 | 4 | 80 |
| 5 | 5 | 80 |
| 6 | 6 | 80 |
| 7 | 7 | 80 |
| 8 | 8 | 80 |
| 9 | 9 | 80 |
| 10 | 10 | 80 |
| 11 | 11 | 80 |
| 12 | 12 | 80 |
| 13 | 13 | 80 |
| 14 | 14 | 80 |
| 15 | 15 | 80 |
| 16 | 16 | 80 |
Each class has 80 count of occurrences. Thus the classes are balanced.
# visualizing the random images in the dataset along with their labels
# VISUALIZATION
import matplotlib.pyplot as plt # MATPLOTLIB FOR PLOTTING
import numpy as np
rand = np.random.randint(0, len(x), 5) # Generating 5 random numbers out of total number of flowers
print(rand)
plt.figure(figsize=(20, 20))
for i,j in enumerate(rand):
plt.subplot(1, len(rand), i+1)
plt.imshow(x[j]) # greens, reds, blues, rgb
plt.title("{}".format(y[j]))
plt.axis('off')
plt.show()
[ 464 1246 630 824 1287]
# Import Library
import skimage.io as io
# Read the image
img = io.imread('17flowers\\jpg\\0\\image_0012.jpg')
plt.imshow(img)
plt.show()
import random
# Original Image
img_org = random.choice(x)
plt.imshow(img_org)
<matplotlib.image.AxesImage at 0x19415dc2c10>
import os
import cv2
# Gray Image
gray_image = cv2.cvtColor(img_org, cv2.COLOR_RGB2GRAY)
img_title = ['original_image', 'gray_image']
plt.figure(figsize=(20,20))
for i,img in enumerate([img_org, gray_image]):
plt.subplot(1,4,i+1)
plt.title(img_title[i])
plt.imshow(img,cmap='gray')
# Sharp Image
sharp_filter = np.array([[0,-1,0],
[-1,5,-1],
[0,-1,0]])
sharp_img = cv2.filter2D(img_org,kernel=sharp_filter,ddepth=-1)
img_title = ['original_image: Before sharpening', 'sharp_image: After sharpening']
plt.figure(figsize=(20,20))
for i,img in enumerate([img_org, sharp_img]):
plt.subplot(1,4,i+1)
plt.title(img_title[i])
plt.imshow(img,cmap='gray')
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
# Blur Image
blur_img = cv2.GaussianBlur(img_org,ksize=(5,5),sigmaX=0,sigmaY=0)
img_title = ['original_image: Before Blurring', 'blurred_image: After Blurring']
plt.figure(figsize=(20,20))
for i,img in enumerate([img_org, blur_img]):
plt.subplot(1,4,i+1)
plt.title(img_title[i])
plt.imshow(img,cmap='gray')
img_title = ['original_image', 'gray_image', 'blurred_image', 'sharp_image']
plt.figure(figsize=(20,20))
for i,img in enumerate([img_org, gray_image, blur_img, sharp_img]):
plt.subplot(1,4,i+1)
plt.title(img_title[i])
plt.imshow(img,cmap='gray')
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42, stratify=y)
print('Train_Shape:', X_train.shape, y_train.shape)
print('Test_Shape:', X_test.shape, y_test.shape)
Train_Shape: (1088, 224, 224, 3) (1088,) Test_Shape: (272, 224, 224, 3) (272,)
# Perform Normalization
x_train = X_train/255.0
x_test = X_test/255.0
# Reshaping to 2D Array for Supervised Learning
nsamples, nx, ny, nrgb = x_train.shape
x_train2 = x_train.reshape((nsamples,nx*ny*nrgb))
x_train2
array([[1.2610535e-03, 2.0299887e-03, 6.9204153e-04, ..., 2.3068051e-04,
2.1530181e-04, 2.9219533e-04],
[6.1514809e-05, 1.5378702e-05, 2.6143793e-04, ..., 0.0000000e+00,
0.0000000e+00, 0.0000000e+00],
[1.6916571e-03, 1.7685506e-03, 9.3810074e-04, ..., 2.0761248e-03,
1.7531719e-03, 9.0734335e-04],
...,
[6.1514805e-04, 6.6128414e-04, 3.9984621e-04, ..., 1.5993848e-03,
1.8762015e-03, 7.0742023e-04],
[3.9215689e-03, 3.9215689e-03, 3.9215689e-03, ..., 3.9215689e-03,
3.9215689e-03, 3.9215689e-03],
[1.8608228e-03, 1.0457517e-03, 4.4598232e-04, ..., 2.7681663e-04,
1.8454441e-04, 2.4605924e-04]], dtype=float32)
# Reshaping test set
nsamples, nx, ny, nrgb = x_test.shape
x_test2 = x_test.reshape((nsamples,nx*ny*nrgb))
x_test2
array([[5.8439065e-04, 1.3840831e-03, 2.1530183e-03, ..., 1.9377163e-03,
2.3068052e-03, 1.1380239e-03],
[2.5990005e-03, 2.4144561e-03, 2.1683970e-03, ..., 2.6143793e-04,
2.4605924e-04, 1.6916571e-04],
[3.9984621e-04, 4.1522493e-04, 2.9219533e-04, ..., 9.2272203e-05,
1.6916571e-04, 6.1514809e-05],
...,
[3.0757402e-04, 4.4598232e-04, 0.0000000e+00, ..., 4.1522493e-04,
2.7681663e-04, 2.9219533e-04],
[7.5355632e-04, 9.3810074e-04, 1.2302962e-04, ..., 1.1072665e-03,
9.2272204e-04, 6.3052675e-04],
[1.6147635e-03, 1.7531719e-03, 4.7673972e-04, ..., 1.2610535e-03,
1.8608228e-03, 1.8454441e-04]], dtype=float32)
# NB - Find the best NBs kernels
from sklearn.naive_bayes import GaussianNB,BernoulliNB,MultinomialNB
k=[BernoulliNB,GaussianNB]
for i in range (len(k)):
NB_Classifier = k[i]()
NB_Classifier.fit(x_train2, y_train)
print ('kernel is =',k[i], '\tScore=',NB_Classifier.score(x_test2, y_test))
kernel is = <class 'sklearn.naive_bayes.BernoulliNB'> Score= 0.16544117647058823 kernel is = <class 'sklearn.naive_bayes.GaussianNB'> Score= 0.39338235294117646
# NB - Model - Gaussian NB is used as per the result from the above code
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
NB = GaussianNB()
NB.fit(x_train2, y_train)
y_pred_tr_NB = NB.predict(x_train2)
NB_Accuracy_Train=accuracy_score(y_train, y_pred_tr_NB)
print("Train Accuracy: ", NB_Accuracy_Train)
y_pred_ts_NB = NB.predict(x_test2)
NB_Accuracy_Test=accuracy_score(y_test, y_pred_ts_NB, normalize = True)
print("Test Accuracy : ", NB_Accuracy_Test)
Train Accuracy: 0.5211397058823529 Test Accuracy : 0.39338235294117646
from sklearn.metrics import classification_report, confusion_matrix
# Classification report
print(classification_report(y_pred_ts_NB,y_test))
precision recall f1-score support
0 0.31 0.71 0.43 7
1 0.12 0.17 0.14 12
2 0.81 0.57 0.67 23
3 0.19 0.43 0.26 7
4 0.75 0.28 0.41 43
5 0.44 0.33 0.38 21
6 0.00 0.00 0.00 3
7 0.38 0.46 0.41 13
8 0.44 0.88 0.58 8
9 0.56 0.35 0.43 26
10 0.38 0.35 0.36 17
11 0.31 0.42 0.36 12
12 0.38 0.40 0.39 15
13 0.38 0.67 0.48 9
14 0.19 0.20 0.19 15
15 0.38 0.25 0.30 24
16 0.69 0.65 0.67 17
accuracy 0.39 272
macro avg 0.39 0.42 0.38 272
weighted avg 0.48 0.39 0.41 272
cm=confusion_matrix(y_test, y_pred_ts_NB)
plt.figure(figsize=(10,7))
sns.heatmap(cm,annot=True,fmt='d')
plt.xlabel('Predicted')
plt.ylabel('Truth')
plt.show()
# RANDOM FOREST
# Library
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Model
model_RF = RandomForestClassifier(n_estimators=20,
criterion='gini',
max_depth=5)
model_RF.fit(x_train2, y_train)
# Accuracy
pred_RF = model_RF.predict(x_test2)
RF_Train = model_RF.score(x_train2, y_train)
RF_Test = accuracy_score(y_test, pred_RF)
# Output
print("Train Accuracy:",RF_Train)
print("Test Accuracy:",RF_Test)
Train Accuracy: 0.7693014705882353 Test Accuracy: 0.3639705882352941
# Classification report
print(classification_report(pred_RF,y_test))
precision recall f1-score support
0 0.25 0.44 0.32 9
1 0.12 0.20 0.15 10
2 0.75 0.60 0.67 20
3 0.31 0.38 0.34 13
4 0.75 0.31 0.44 39
5 0.19 0.23 0.21 13
6 0.19 0.33 0.24 9
7 0.44 0.54 0.48 13
8 0.44 0.50 0.47 14
9 0.25 0.22 0.24 18
10 0.31 0.16 0.21 32
11 0.25 0.33 0.29 12
12 0.50 0.53 0.52 15
13 0.19 0.30 0.23 10
14 0.19 0.33 0.24 9
15 0.25 0.31 0.28 13
16 0.81 0.57 0.67 23
accuracy 0.36 272
macro avg 0.36 0.37 0.35 272
weighted avg 0.43 0.36 0.38 272
cm=confusion_matrix(y_test, pred_RF)
plt.figure(figsize=(10,7))
sns.heatmap(cm,annot=True,fmt='d')
plt.xlabel('Predicted')
plt.ylabel('Truth')
plt.show()
# Convert target variable
# Import Library
from sklearn.preprocessing import LabelBinarizer
# Create class for encoding
enc = LabelBinarizer()
# Fit & Transform the training target variable
y_train2 = enc.fit_transform(y_train)
# Display the newly encoded target class of training variable
y_train2[0]
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0])
# Fit & Transform the test target variable
y_test2 = enc.transform(y_test)
# Display the newly encoded target class of training variable
y_test2[0]
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
### define model
import tensorflow as tf
from tensorflow.keras import losses
from tensorflow.keras import optimizers
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import BatchNormalization
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation
from tensorflow.python.keras.layers import Dense, Dropout, InputLayer, Flatten
backend.clear_session()
#Fixing the seed for random number generators so that we can ensure we receive the same output everytime
np.random.seed(42)
import random
random.seed(42)
tf.random.set_seed(42)
image_size = 224*224*3
# define model
from tensorflow.keras import losses
from tensorflow.keras import optimizers
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.callbacks import ModelCheckpoint, ReduceLROnPlateau
backend.clear_session()
#Fixing the seed for random number generators so that we can ensure we receive the same output everytime
np.random.seed(42)
import random
random.seed(42)
tf.random.set_seed(42)
# create model
model_b_1 = Sequential()
model_b_1.add(Dense(256,activation='relu',kernel_initializer='he_uniform',input_shape=(150528,)))
model_b_1.add(Dense(160,activation='relu',kernel_initializer='he_uniform'))
model_b_1.add(Dropout(0.5))
model_b_1.add(Dense(224,activation='relu',kernel_initializer='he_uniform'))
model_b_1.add(Dense(256,activation='relu',kernel_initializer='he_uniform'))
model_b_1.add(Dropout(0.2))
model_b_1.add(Dense(128,activation='relu',kernel_initializer='he_uniform'))
model_b_1.add(Dense(len(no_class), activation='softmax')) ### For multiclass classification Softmax is used
model_b_1.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
## Looking into our base model
model_b_1.summary()
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= dense (Dense) (None, 256) 38535424 _________________________________________________________________ dense_1 (Dense) (None, 160) 41120 _________________________________________________________________ dropout (Dropout) (None, 160) 0 _________________________________________________________________ dense_2 (Dense) (None, 224) 36064 _________________________________________________________________ dense_3 (Dense) (None, 256) 57600 _________________________________________________________________ dropout_1 (Dropout) (None, 256) 0 _________________________________________________________________ dense_4 (Dense) (None, 128) 32896 _________________________________________________________________ dense_5 (Dense) (None, 17) 2193 ================================================================= Total params: 38,705,297 Trainable params: 38,705,297 Non-trainable params: 0 _________________________________________________________________
import time
start_time = time.time()
history = model_b_1.fit(x_train2,
y_train2,
epochs = 10,
validation_data = (x_test2,y_test2),
batch_size = 32)
print("****** %s seconds" % (time.time() - start_time))
Train on 1088 samples, validate on 272 samples Epoch 1/10 1088/1088 [==============================] - ETA: 0s - loss: 2.8880 - acc: 0.0570WARNING:tensorflow:From C:\Users\laksh\anaconda3\lib\site-packages\tensorflow\python\keras\engine\training_v1.py:2048: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version. Instructions for updating: This property should not be used in TensorFlow 2.0, as updates are applied automatically. 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.8880 - acc: 0.0570 - val_loss: 2.7987 - val_acc: 0.1103 Epoch 2/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.7649 - acc: 0.0800 - val_loss: 2.5350 - val_acc: 0.1287 Epoch 3/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.4432 - acc: 0.1268 - val_loss: 2.2651 - val_acc: 0.2059 Epoch 4/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.2171 - acc: 0.1866 - val_loss: 2.1597 - val_acc: 0.2463 Epoch 5/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.1908 - acc: 0.1912 - val_loss: 2.0960 - val_acc: 0.2390 Epoch 6/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.0952 - acc: 0.2335 - val_loss: 2.0250 - val_acc: 0.2684 Epoch 7/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 2.0160 - acc: 0.2472 - val_loss: 2.0125 - val_acc: 0.2757 Epoch 8/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 1.9477 - acc: 0.2583 - val_loss: 1.9263 - val_acc: 0.2904 Epoch 9/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 1.9150 - acc: 0.2812 - val_loss: 2.0230 - val_acc: 0.2610 Epoch 10/10 1088/1088 [==============================] - 5s 5ms/sample - loss: 1.8131 - acc: 0.3061 - val_loss: 1.9022 - val_acc: 0.2904 ****** 53.021321058273315 seconds
# Predict the whole generator to get predictions
#Y_pred = classifier.predict_generator(test_set, int(500/32+1))
Y_pred = model_b_1.predict(x_test2)
# Find out the predictions classes with maximum probability
y_pred = np.argmax(Y_pred, axis=1)
# Utilities for confusion matrix
from sklearn.metrics import classification_report, confusion_matrix
cm=confusion_matrix(y_test, y_pred)
plt.figure(figsize=(10,7))
sns.heatmap(cm,annot=True,fmt='d')
plt.xlabel('Predicted')
plt.ylabel('Truth')
plt.show()
# Printing the classification report
print(classification_report(y_test, y_pred))
precision recall f1-score support
0 0.00 0.00 0.00 16
1 0.15 0.12 0.14 16
2 0.82 0.56 0.67 16
3 0.13 0.19 0.15 16
4 0.24 0.31 0.27 16
5 0.00 0.00 0.00 16
6 0.00 0.00 0.00 16
7 0.43 0.62 0.51 16
8 0.45 0.56 0.50 16
9 0.19 0.38 0.25 16
10 0.14 0.25 0.18 16
11 0.00 0.00 0.00 16
12 0.38 0.19 0.25 16
13 0.26 0.62 0.36 16
14 0.00 0.00 0.00 16
15 0.12 0.12 0.12 16
16 0.46 1.00 0.63 16
accuracy 0.29 272
macro avg 0.22 0.29 0.24 272
weighted avg 0.22 0.29 0.24 272
## Accuracy and Loss plots
import matplotlib.pyplot as plt
%matplotlib inline
accuracy = history.history['acc']
val_accuracy = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = range(len(accuracy)) # Get number of epochs
plt.plot (epochs, accuracy, label = 'training accuracy')
plt.plot (epochs, val_accuracy, label = 'validation accuracy')
plt.title ('Training and validation accuracy')
plt.legend(loc = 'lower right')
plt.figure()
plt.plot (epochs, loss, label = 'training loss')
plt.plot (epochs, val_loss, label = 'validation loss')
plt.legend(loc = 'upper right')
<matplotlib.legend.Legend at 0x19456463970>
Thus, the NN model gave a test accuracy of 29% and train accuracy of 30% at Epoch = 10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.optimizers import Adam
import numpy as np
# Initialising the CNN classifier
classifier = Sequential()
# Add a Convolution layer with 32 kernels of 3X3 shape with activation function ReLU
classifier.add(Conv2D(32, (3, 3), input_shape = (224, 224, 3), activation = 'relu', padding = 'same'))
# Add a Max Pooling layer of size 2X2
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Add another Convolution layer with 32 kernels of 3X3 shape with activation function ReLU
classifier.add(Conv2D(64, (3, 3), activation = 'relu', padding = 'same'))
# Adding another pooling layer
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Add another Convolution layer with 32 kernels of 3X3 shape with activation function ReLU
classifier.add(Conv2D(128, (3, 3), activation = 'relu', padding = 'same'))
# Adding another pooling layer
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Flattening the layer before fully connected layers
classifier.add(Flatten())
classifier.add(Dropout(0.75))
# Adding a fully connected layer with 512 neurons
classifier.add(Dense(units = 512, activation = 'relu'))
# Adding dropout
classifier.add(Dropout(0.75))
# Adding a fully connected layer with 128 neurons
classifier.add(Dense(units = 128, activation = 'relu'))
# The final output layer with 5 neuron to predict the categorical classifcation
classifier.add(Dense(units = 17, activation = 'softmax'))
#opt = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.001, amsgrad=False)
classifier.compile(optimizer='adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
classifier.summary()
Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 224, 224, 32) 896 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 112, 112, 32) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 112, 112, 64) 18496 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 56, 56, 64) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 56, 56, 128) 73856 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 28, 28, 128) 0 _________________________________________________________________ flatten (Flatten) (None, 100352) 0 _________________________________________________________________ dropout_2 (Dropout) (None, 100352) 0 _________________________________________________________________ dense_6 (Dense) (None, 512) 51380736 _________________________________________________________________ dropout_3 (Dropout) (None, 512) 0 _________________________________________________________________ dense_7 (Dense) (None, 128) 65664 _________________________________________________________________ dense_8 (Dense) (None, 17) 2193 ================================================================= Total params: 51,541,841 Trainable params: 51,541,841 Non-trainable params: 0 _________________________________________________________________
import time
start_time = time.time()
# Fit the model
histroy_cnn = classifier.fit(X_train, y_train2, validation_data=(X_test, y_test2), epochs=10, batch_size=8, verbose=1)
print("****** %s seconds" % (time.time() - start_time))
Train on 1088 samples, validate on 272 samples Epoch 1/10 1088/1088 [==============================] - 83s 76ms/sample - loss: 2.8000 - acc: 0.0763 - val_loss: 2.6092 - val_acc: 0.1066 Epoch 2/10 1088/1088 [==============================] - 85s 78ms/sample - loss: 2.5859 - acc: 0.1489 - val_loss: 2.4034 - val_acc: 0.1949 Epoch 3/10 1088/1088 [==============================] - 77s 71ms/sample - loss: 2.3699 - acc: 0.2040 - val_loss: 2.2628 - val_acc: 0.2243 Epoch 4/10 1088/1088 [==============================] - 77s 71ms/sample - loss: 2.2200 - acc: 0.2279 - val_loss: 1.9131 - val_acc: 0.3456 Epoch 5/10 1088/1088 [==============================] - 82s 75ms/sample - loss: 2.0437 - acc: 0.2895 - val_loss: 1.8369 - val_acc: 0.3529 Epoch 6/10 1088/1088 [==============================] - 85s 78ms/sample - loss: 1.9414 - acc: 0.3171 - val_loss: 1.7372 - val_acc: 0.3971 Epoch 7/10 1088/1088 [==============================] - 86s 79ms/sample - loss: 1.8309 - acc: 0.3676 - val_loss: 1.7055 - val_acc: 0.3713 Epoch 8/10 1088/1088 [==============================] - 79s 72ms/sample - loss: 1.7656 - acc: 0.3833 - val_loss: 1.6142 - val_acc: 0.3897 Epoch 9/10 1088/1088 [==============================] - 77s 71ms/sample - loss: 1.7197 - acc: 0.4099 - val_loss: 1.6768 - val_acc: 0.4044 Epoch 10/10 1088/1088 [==============================] - 77s 71ms/sample - loss: 1.6565 - acc: 0.4154 - val_loss: 1.5527 - val_acc: 0.4706 ****** 815.4075994491577 seconds
## Accuracy and Loss plots
accuracy_cnn = histroy_cnn.history['acc']
val_accuracy_cnn = histroy_cnn.history['val_acc']
loss_cnn = histroy_cnn.history['loss']
val_loss_cnn = histroy_cnn.history['val_loss']
epochs = range(len(accuracy_cnn)) # Get number of epochs
plt.plot (epochs, accuracy_cnn, label = 'training accuracy')
plt.plot (epochs, val_accuracy_cnn, label = 'validation accuracy')
plt.title ('Training and validation accuracy')
plt.legend(loc = 'lower right')
plt.figure()
plt.plot (epochs, loss_cnn, label = 'training loss')
plt.plot (epochs, val_loss_cnn, label = 'validation loss')
plt.legend(loc = 'upper right')
plt.title ('Training and validation loss')
Text(0.5, 1.0, 'Training and validation loss')
# Predict the whole generator to get predictions
#Y_pred = classifier.predict_generator(test_set, int(500/32+1))
Y_pred = classifier.predict(X_test)
# Find out the predictions classes with maximum probability
y_pred = np.argmax(Y_pred, axis=1)
# Utilities for confusion matrix
from sklearn.metrics import classification_report, confusion_matrix
cm=confusion_matrix(y_test, y_pred)
plt.figure(figsize=(10,7))
sns.heatmap(cm,annot=True,fmt='d')
plt.xlabel('Predicted')
plt.ylabel('Truth')
plt.show()
# Printing the classification report
print(classification_report(y_test, y_pred))
precision recall f1-score support
0 0.29 0.12 0.17 16
1 0.34 0.69 0.46 16
2 0.75 0.75 0.75 16
3 0.24 0.25 0.24 16
4 0.37 0.94 0.53 16
5 0.23 0.31 0.26 16
6 0.00 0.00 0.00 16
7 0.50 0.44 0.47 16
8 0.75 0.75 0.75 16
9 0.22 0.25 0.24 16
10 0.31 0.56 0.40 16
11 1.00 0.12 0.22 16
12 0.50 0.12 0.20 16
13 0.87 0.81 0.84 16
14 0.25 0.12 0.17 16
15 0.93 0.88 0.90 16
16 0.88 0.88 0.88 16
accuracy 0.47 272
macro avg 0.50 0.47 0.44 272
weighted avg 0.50 0.47 0.44 272
| Model | Train Accuracy | Test Accuracy |
|---|---|---|
| NB | 52% | 40% |
| RF | 77% | 37% |
| NN | 32% | 29% |
| CNN | 42% | 48% |
CNN is the best performing model, so using the CNN model to perdict the label for 'Prediction.jpg'
import cv2
from matplotlib import pyplot as plt
from matplotlib import image as mpimg
test_image = cv2.imread('Prediction.jpg')
image = mpimg.imread("Prediction.jpg")
plt.imshow(image)
# Resize the image to 224x224 shape to be compatible with the model
test_image = cv2.resize(test_image,(224,224))
# Check if the size of the Image array is compatible with Keras model
print(test_image.shape)
# If not compatible expand the dimensions to match with the Keras Input
test_image = np.expand_dims(test_image, axis = 0)
test_image =test_image*1/255.0
#Check the size of the Image array again
print('After expand_dims: '+ str(test_image.shape))
print('labels:', no_class)
result = classifier.predict(test_image)
print("Softmax Outputs:", result[0])
print("Sum of Softmax Outputs:", result[0].sum())
# Index of the class with maximum probability
predicted_index = np.argmax(result[0])
# Print the name of the class
print("\n")
print("The Predicted class is :", no_class[predicted_index])
print("\n")
plt.show()
(224, 224, 3) After expand_dims: (1, 224, 224, 3) labels: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] Softmax Outputs: [5.87739050e-04 3.16922337e-01 1.20976325e-02 2.89481715e-04 7.12793480e-05 1.92642305e-03 9.40024620e-05 3.42503458e-01 1.47369457e-02 1.61637202e-01 7.14663863e-02 4.69156392e-02 1.92876365e-02 3.76298645e-04 2.27417448e-03 8.80595203e-03 7.35173489e-06] Sum of Softmax Outputs: 0.99999994 The Predicted class is : 7